最近公司在做客户端阅历数据分析,服务器端同事需要计算每个用户的读书分类,读了多少本书,读过多少本书,总时长,总分,数据量非常大,服务器同事那边单机处理一次需要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工具包,已编译配置好,直接调用即可
hive窗口系列函数
pdf文件讲述hive实现原理,图文并茂。
hive udaf 实现按位取与或 hive udaf 实现按位取与或 hive udaf 实现按位取与或
部分普通sql查询在hive中的实现方式详细说明;
Hive原理与实现 详细介绍了hive的原理
大数据hive实现原理.zip
hive实现并发机制:hive里,同一sql里,会涉及到n个job,默认情况下,每个job是顺序执行的。 如果每个job没有前后依赖关系,可以并发执行的话,可以通过设置该参数 set hive.exec.parallel=true,实现job并发执行...
Hive优化方法整理 hive 数据倾斜 内连接
Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践
hive hive hive hive hive hive hive hive hive hive hive hive
hive造数据
pyflink将mysql数据直接插入hive,由此可以延伸出pyflink实现hive关联mysql
spark替代Hive实现ETL作业
4.2.1 Hive 新增一个字段: 4 4.2.2 Hive 修改字段名/字段类型/字段位置/字段注释: 4 4.2.3 Hive 重命名表名: 4 4.3Hive 删除表: 4 5 Hive 分区 4 5.1 Hive 添加分区 4 5.2 Hive 删除分区 5 6 SHOW语句 5 7 ...
NULL 博文链接:https://coderplay.iteye.com/blog/468623
HiveSQL基础(一).pdf
hive的一些报错及解决方法:连接报错、执行脚本卡住、内存溢出报错、表死锁问题