hive使用技巧(三)——巧用group by实现去重统计
来源:互联网 发布:linux查看端口nc 编辑:程序博客网 时间:2024/04/30 18:30
相关文章推荐:
hive使用技巧(一)自动化动态分配表分区及修改hive表字段名称
hive使用技巧(二)——共享中间结果集
hive使用技巧(三)——巧用group by实现去重统计
hive使用技巧(四)——巧用MapJoin解决数据倾斜问题
Hive使用技巧(五)—— 一行转多行,多行转一行
网站统计中常用的指标,pv ,uv , 独立IP,登录用户等,都涉及去重操作。全年的统计,PV超过100亿以上。即使是简单的去重统计也非常困难。
1、统计去重,原来SQL如下
select substr(day,1,4) year,count(*) PV,count(distinct cookieid) UV,count(distinct ip) IP,count(distinct userid) LOGIN from dms.tracklog_5min a where substr(day,1,4)='2015'group by substr(day,1,4);
统计中四个指示,三个都涉及了去重,任务跑了几个小时都未出结果。
2、利用group by 实现去重
select "2015","PV",count(*) from dms.tracklog_5minwhere day>='2015' and day<'2016'union all select "201505","UV",count(*) from (select cookieid from dms.tracklog_5minwhere day>='2015' and day<'2016' group by cookieid ) a union all select "2015","IP",count(*) from (select ip from dms.tracklog_5minwhere day>='2015' and day<'2016' group by ip ) a union all select "2015","LOGIN",count(*) from (select userid from dms.tracklog_5minwhere day>='2015' and day<'2016' group by userid) b;
单独统计pv,uv,IP,login等指标,并union拼起来,任务跑了不到1个小时就去来结果了
3、参数的优化
SET mapred.reduce.tasks=50;SET mapreduce.reduce.memory.mb=6000;SET mapreduce.reduce.shuffle.memory.limit.percent=0.06;
涉及数据倾斜的话,主要是reduce中数据倾斜的问题,可能通过设置hive中reduce的并行数,reduce的内存大小单位为m,reduce中 shuffle的刷磁盘的比例,来解决。
2 0
- hive使用技巧(三)——巧用group by实现去重统计
- hive使用技巧(三)——巧用group by实现去重统计
- (MySql)distinct、group by去重
- android 开发,MediaStore去重查询,使用Group By
- mysql去重distinct和group by
- ThinkPHP去重 distinct和group by
- hibernate使用group by,having实现统计功能
- hibernate使用group by,having实现统计功能
- [es-sql] 不支持distinct去重,可以用group by来实现
- Hive – Group By 的实现
- Hive – Group By 的实现
- Hive – Group By 的实现
- hive 底层模块实现-group by
- ORACLE GROUP BY 如何去重 小汇
- 关于distinct 和group by的去重逻辑浅析
- mysql 去重方法distinct 与 group by 性能比较
- 关于distinct 和group by的去重逻辑浅析
- mysql group by 用法解析(详细) + mysql distinct 去重
- 文章标题
- Web自动化测试原理
- JavaScript基础——使用Canvas画图
- Spring controller
- 关于Build AutoMatically的一些解决办法
- hive使用技巧(三)——巧用group by实现去重统计
- web.xml 中的过滤器(拦截器)Filter与监听器Listener的作用和区别?
- iOS 学会使用delegate和block<二>
- 获取xml中backgound属性的statelistdrawable里drawable的方法
- HTTPS优化的一此常用技巧
- U盘安装Linux红帽子6.4系统
- AsyncTask与Handler的区别
- Android View not attached to window manager解决方案
- 逻辑题不要只写结果,我一直觉得是要写过程。