`

hive 实现多行转一行处理方法

    博客分类:
  • hive
 
阅读更多

最近公司在做客户端阅历数据分析,服务器端同事需要计算每个用户的读书分类,读了多少本书,读过多少本书,总时长,总分,数据量非常大,服务器同事那边单机处理一次需要10个小时,后来我拿来我们这边做,分布式计算总比单机计算快吧,所以分享一下:

1.需要统计每个用户的书籍分类

sql:

select  us.user_name,us.bid,b.classname  from  book_class  
b  join user_all_books_times us on (us.bid=b.bid)

 首先统计出来用户读书的分类

2.上面sql查询出来有三个字段需要转化为两个字段

user_name       classtypeNum 

张三                   1000003:56----分类10000003 有56本

sql:

hive -e "create table  user_book_class  as   select  
user_name,concat(classname,':',num) as cl from  (select
 user_name,classname,sum(1) as num from (select  
us.user_name,us.bid,b.classname  from  book_class  b  
join user_all_books_times_sup us on (us.bid=b.bid)) f 
 group by user_name,classname) f1"

 3.一个用户对应很多个分类,所以一个用户会有很多行记录,那么最后转化为一行

user_name      classtypesum

张三                  100004:56,100004:47,,,,,,,,,,

sql:

select user_name, concat_ws(',', collect_set(cl) as 
classtype  from  user_book_class where cl is not null 
and cl !=''  group by  user_name;

 最后满足需求,20分钟搞定,也可以自己写一个UTAF来实现。

 

 

 

 

 

 

分享到:
评论
1 楼 di1984HIT 2014-06-13  
写的不错啊。

相关推荐

    HIVE多行转多列 和 多列转多行

    1、HIVE多行转多列 源数据样式 把CAMERA_NO,RESULT_DATA两列转换为CAMERA_NO字段的数据为列名,RESULT_DATA字段对应CAMERA_NO的数据为值 方法一:利用str_to_map函数 alter table ods.iot.iot_5060_iotdaq.5060_...

    Hive 多行合并和分组limit输出 UDF工具包

    用于多行合并和分组limit输出的udf工具包,已编译配置好,直接调用即可

    hive窗口函数

    在大数据处理领域,Apache Hive 是一个广泛使用的数据仓库工具,它提供了一种SQL-like的语言——HiveQL,使得用户能够更方便地进行数据汇总、特殊查询和分析。其中,窗口函数是HiveQL的一个重要组成部分,它可以在不...

    hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出

    - UDTF(用户定义的表生成函数):将一行数据转换为多行,常用于数据拆分。 4. Hive参数调优: - 内存参数:如mapreduce.map.memory.mb、hive.server2.executor.memory.overhead等,合理设置可避免内存溢出。 - ...

    Python pandas 列转行操作详解(类似hive中explode方法)

    本文将详细讲解如何在pandas中进行列转行的操作,类似于Hive中的explode方法,这对于处理包含列表或者数组的数据尤为有用。 首先,我们来看一个简单的例子。假设有一个DataFrame `df`,其中包含两列:`A` 和 `B`,`...

    自定义hive函数

    至于“rownum”,在标准SQL中,`ROW_NUMBER()`是一个窗口函数,但在Hive中,你需要使用`ROW_NUMBER()`或者`RANK()`等内置函数来实现类似的功能,为每一行分配一个唯一的行号。如果Hive内置的函数无法满足需求,你...

    hive影评案例.zip

    标题中的“hive影评案例.zip”表明这是一个关于使用Hive处理电影评论数据的示例。Hive是基于Hadoop的数据仓库工具,它允许用户通过SQL(HQL,Hive SQL)查询分布式存储的大数据集。这个压缩包可能包含了用于分析用户...

    HIve UDF 说明书

    UDTF则允许用户将一行数据转换为多行数据,或者将多行数据合并为一行数据输出,这对于处理复杂的数据结构特别有用。 在自定义UDF的创建中,Hive官方文档提到了UDF的一些内部机制以及创建自定义UDF的详细步骤。创建...

    Apache Hive Functions Cheat Sheet

    用户定义函数(UDF)是一个接受一个或多个行中的列作为参数,并返回一个值或对象的函数,例如concat(col1,col2)。用户定义聚合函数(UDAF)聚合多行中的列值,并返回一个单一值,例如sum(c1)。用户定义表生成函数...

    hive sql详解 经典

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(称为HiveQL)查询存储在Hadoop分布式文件系统(HDFS)中的大型数据集。这篇博客深入探讨了Hive SQL的使用,帮助用户理解和掌握其核心概念...

    hive自定义函数demo

    在大数据处理领域,Hive 是一个非常重要的工具,它提供了SQL-like的语言用于处理分布式存储的数据。本示例“hive自定义函数demo”将探讨如何在Hive中开发和使用自定义函数(UDF),这对于扩展Hive的功能和适应特定...

    python处理数据,存进hive表的方法

    通过上述方法,可以有效地将txt文件中的数据处理并存入Hive表中,实现数据的整合和利用。需要注意的是,在处理大规模数据集时,需要考虑数据处理和迁移的效率和性能。另外,熟悉Hive的操作和HiveQL语句对于确保数据...

    hive环境搭建和建表加载数据

    `LATERAL VIEW`与`EXPLODE`函数一起使用,可以将数组或映射中的元素展开成多行,使得每个元素都能在单独的行中展示。比如,在处理`hive_wordcount`表时,将`context`列中的文本按制表符拆分成单词,并计算每个单词...

    HiveSQL解析原理.docx

    - **第二种**:对所有Distinct字段进行编号,每行数据生成多行数据,使得相同字段能够分别排序。此时,在Reduce阶段只需记录LastKey即可完成去重。虽然这种方法减少了内存消耗,但会增加shuffle的数据量。 #### 三...

    Hive常用函数

    - **UDTF (User Defined Table Generating Functions)**:如 `explode`, `split` 等,配合 `LATERAL VIEW` 可以将一行数据拆分成多行,便于进一步处理。 2. **函数示例**: - **类型转换**:`cast(1.5 as int)` ...

    大数据组件 Hive 面试题 + Hive 高频面试题

    内部表的生命周期由Hive管理,删除时会一同删除数据,适合用于独立使用;而外部表仅删除元数据,原始数据保留,适用于与其他工具共享数据。 接下来是Hive中的排序与分区操作。`Sort By`确保了分区内的数据有序,`...

    Hive学习笔记

    如果一行数据跨越了多个数据块,Hive 需要读取多个块来获取完整行。为了提高效率,Hive 通过数据本地化策略,尽可能地让数据处理任务运行在数据所在的节点上,减少网络传输。 2. **ETL 过程**: - ETL 是数据处理...

    hive 函数大全

    11. **UDTF(用户自定义表生成函数)**:能够返回多行数据的函数,可以将一行数据转化为多行。 以上是Hive函数的主要类别,具体每个函数的使用方式和参数需要参考官方文档或相关教程。通过熟练掌握这些函数,用户...

    hive常用函数参数手册

    - **用户定义表函数 (UDTF)**: 可以生成多行输出,适用于将一行数据拆分成多行的情况。 ##### 9. **窗口函数** - 用于在数据集的不同窗口上执行计算,如累计计算、排名等。 - **`LEAD`**: 下一个值。 - **`LAG`**...

Global site tag (gtag.js) - Google Analytics