最近公司在做客户端阅历数据分析,服务器端同事需要计算每个用户的读书分类,读了多少本书,读过多少本书,总时长,总分,数据量非常大,服务器同事那边单机处理一次需要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、HIVE多行转多列 源数据样式 把CAMERA_NO,RESULT_DATA两列转换为CAMERA_NO字段的数据为列名,RESULT_DATA字段对应CAMERA_NO的数据为值 方法一:利用str_to_map函数 alter table ods.iot.iot_5060_iotdaq.5060_...
用于多行合并和分组limit输出的udf工具包,已编译配置好,直接调用即可
在大数据处理领域,Apache Hive 是一个广泛使用的数据仓库工具,它提供了一种SQL-like的语言——HiveQL,使得用户能够更方便地进行数据汇总、特殊查询和分析。其中,窗口函数是HiveQL的一个重要组成部分,它可以在不...
- UDTF(用户定义的表生成函数):将一行数据转换为多行,常用于数据拆分。 4. Hive参数调优: - 内存参数:如mapreduce.map.memory.mb、hive.server2.executor.memory.overhead等,合理设置可避免内存溢出。 - ...
本文将详细讲解如何在pandas中进行列转行的操作,类似于Hive中的explode方法,这对于处理包含列表或者数组的数据尤为有用。 首先,我们来看一个简单的例子。假设有一个DataFrame `df`,其中包含两列:`A` 和 `B`,`...
至于“rownum”,在标准SQL中,`ROW_NUMBER()`是一个窗口函数,但在Hive中,你需要使用`ROW_NUMBER()`或者`RANK()`等内置函数来实现类似的功能,为每一行分配一个唯一的行号。如果Hive内置的函数无法满足需求,你...
标题中的“hive影评案例.zip”表明这是一个关于使用Hive处理电影评论数据的示例。Hive是基于Hadoop的数据仓库工具,它允许用户通过SQL(HQL,Hive SQL)查询分布式存储的大数据集。这个压缩包可能包含了用于分析用户...
UDTF则允许用户将一行数据转换为多行数据,或者将多行数据合并为一行数据输出,这对于处理复杂的数据结构特别有用。 在自定义UDF的创建中,Hive官方文档提到了UDF的一些内部机制以及创建自定义UDF的详细步骤。创建...
用户定义函数(UDF)是一个接受一个或多个行中的列作为参数,并返回一个值或对象的函数,例如concat(col1,col2)。用户定义聚合函数(UDAF)聚合多行中的列值,并返回一个单一值,例如sum(c1)。用户定义表生成函数...
在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(称为HiveQL)查询存储在Hadoop分布式文件系统(HDFS)中的大型数据集。这篇博客深入探讨了Hive SQL的使用,帮助用户理解和掌握其核心概念...
在大数据处理领域,Hive 是一个非常重要的工具,它提供了SQL-like的语言用于处理分布式存储的数据。本示例“hive自定义函数demo”将探讨如何在Hive中开发和使用自定义函数(UDF),这对于扩展Hive的功能和适应特定...
通过上述方法,可以有效地将txt文件中的数据处理并存入Hive表中,实现数据的整合和利用。需要注意的是,在处理大规模数据集时,需要考虑数据处理和迁移的效率和性能。另外,熟悉Hive的操作和HiveQL语句对于确保数据...
`LATERAL VIEW`与`EXPLODE`函数一起使用,可以将数组或映射中的元素展开成多行,使得每个元素都能在单独的行中展示。比如,在处理`hive_wordcount`表时,将`context`列中的文本按制表符拆分成单词,并计算每个单词...
- **第二种**:对所有Distinct字段进行编号,每行数据生成多行数据,使得相同字段能够分别排序。此时,在Reduce阶段只需记录LastKey即可完成去重。虽然这种方法减少了内存消耗,但会增加shuffle的数据量。 #### 三...
- **UDTF (User Defined Table Generating Functions)**:如 `explode`, `split` 等,配合 `LATERAL VIEW` 可以将一行数据拆分成多行,便于进一步处理。 2. **函数示例**: - **类型转换**:`cast(1.5 as int)` ...
内部表的生命周期由Hive管理,删除时会一同删除数据,适合用于独立使用;而外部表仅删除元数据,原始数据保留,适用于与其他工具共享数据。 接下来是Hive中的排序与分区操作。`Sort By`确保了分区内的数据有序,`...
如果一行数据跨越了多个数据块,Hive 需要读取多个块来获取完整行。为了提高效率,Hive 通过数据本地化策略,尽可能地让数据处理任务运行在数据所在的节点上,减少网络传输。 2. **ETL 过程**: - ETL 是数据处理...
11. **UDTF(用户自定义表生成函数)**:能够返回多行数据的函数,可以将一行数据转化为多行。 以上是Hive函数的主要类别,具体每个函数的使用方式和参数需要参考官方文档或相关教程。通过熟练掌握这些函数,用户...
- **用户定义表函数 (UDTF)**: 可以生成多行输出,适用于将一行数据拆分成多行的情况。 ##### 9. **窗口函数** - 用于在数据集的不同窗口上执行计算,如累计计算、排名等。 - **`LEAD`**: 下一个值。 - **`LAG`**...