hive使用技巧(二)——共享中间结果集
来源:互联网 发布:手机淘宝买家改差评 编辑:程序博客网 时间:2024/05/14 20:49
相关文章推荐:
hive使用技巧(一)自动化动态分配表分区及修改hive表字段名称
hive使用技巧(二)——共享中间结果集
hive使用技巧(三)——巧用group by实现去重统计
hive使用技巧(四)——巧用MapJoin解决数据倾斜问题
Hive使用技巧(五)—— 一行转多行,多行转一行
hive使用技巧(二)——共享中间结果集,很多hive的Job用到的中间结果集 ,存在“亲缘”关系,多作业用共用输入或输出。
1、优化前的SQL
SELECT COUNT(*) pvFROM ( SELECT cookieid, userid, to_date(DATETIME) day1 FROM ods.tracklog_5min WHERE DAY>='20151001' AND DAY<='20151031' AND lower(requesturl) IN ('http://chat.hexun.com/', 'http://zhibo.hexun.com/'))t1 INNER JOIN ( SELECT cookieid, to_date(DATETIME) day2 FROM ods.tracklog_5min WHERE DAY>='20151001' AND DAY<='20151031' AND (( lower(requesturl) LIKE 'http://zhibo.hexun.com/%' OR lower(requesturl) LIKE 'http://chat.hexun.com/%') AND requesturl LIKE '%/default.html%'))t2ON t1.cookieid=t2.cookieidAND t1.day1=t2.day2INNER JOIN ( SELECT cookieid, to_date(DATETIME) day3 FROM ods.tracklog_5min WHERE DAY>='20151001' AND DAY<='20151031' AND ( ( lower(requesturl) LIKE 'http://px.hexun.com/%' AND lower(requesturl) LIKE '%/default.html%' ) OR ( lower(requesturl) LIKE 'http://px.hexun.com/pack/%' AND lower(requesturl) LIKE '%.html%' ) OR ( lower(requesturl) LIKE 'http://px.hexun.com/p/%' AND lower(requesturl) LIKE '%.html%' ) ))t3ON t1.cookieid=t3.cookieidAND t1.day1=t3.day3LEFT JOIN stage.saleplatform_productvisitdetail_temp t4ON t1.userid=t4.useridWHERE t4.createtime>t1.day1OR t4.userid IS NULL;
可以看,上面的SQL针对同一源表的数据查询了三次,浪费了系统的资源,相同的源完全可以通用。
2、优化后的SQL
抽出公共数据
create table default.tracklog_10month as select * from ods.tracklog_5minWHERE DAY>='20151001' AND DAY<='20151031';利用临时表,替换原SQL的公共部分:
SELECT COUNT(*) pvFROM ( SELECT cookieid, userid, to_date(DATETIME) day1 FROM default.tracklog_10month WHERE lower(requesturl) IN ('http://chat.hexun.com/', 'http://zhibo.hexun.com/'))t1 INNER JOIN ( SELECT cookieid, to_date(DATETIME) day2 FROM default.tracklog_10month WHERE (lower(requesturl) LIKE 'http://zhibo.hexun.com/%' OR lower(requesturl) LIKE 'http://chat.hexun.com/%') AND requesturl LIKE '%/default.html%')t2ON t1.cookieid=t2.cookieidAND t1.day1=t2.day2INNER JOIN ( SELECT cookieid, to_date(DATETIME) day3 FROM default.tracklog_10month WHERE ( ( lower(requesturl) LIKE 'http://px.hexun.com/%' AND lower(requesturl) LIKE '%/default.html%' ) OR ( lower(requesturl) LIKE 'http://px.hexun.com/pack/%' AND lower(requesturl) LIKE '%.html%' ) OR ( lower(requesturl) LIKE 'http://px.hexun.com/p/%' AND lower(requesturl) LIKE '%.html%' ) ))t3ON t1.cookieid=t3.cookieidAND t1.day1=t3.day3LEFT JOIN stage.saleplatform_productvisitdetail_temp t4ON t1.userid=t4.useridWHERE t4.createtime>t1.day1OR t4.userid IS NULL;
3、共享中间结果集
本质就是降IO,减少MR阶段中大量读写磁盘及网络IO的压力。
1 0
- hive使用技巧(二)——共享中间结果集
- hive共享中间结果集
- Hive 优化之 共享中间结果集
- 将Hive统计分析结果导入到MySQL数据库表中(二)——使用Hive和MySQL JDBC驱动
- hive中间结果和结果的压缩
- hive 压缩 最终结果 中间结果
- hive结果及中间结果压缩
- Hive用户接口(二)—使用Hive JDBC驱动连接Hive操作实例
- 将Hive统计分析结果导入到MySQL数据库表中(三)——使用Hive UDF或GenericUDF
- Mapr与Hive工作(二)——使用HiveServer2
- hive 操作(二)——使用 mysql 作为 hive 的metastore
- 记录一下Hive中间和最终结果压缩
- 详解Hive-CliDriver——细读Hive源码(二)
- PyTorch学习总结(一)——查看模型中间结果
- hive使用技巧(三)——巧用group by实现去重统计
- hive使用技巧(四)——巧用MapJoin解决数据倾斜问题
- hive使用技巧(五)—— 一行转多行,多行转一行
- hive使用技巧(三)——巧用group by实现去重统计
- 指针遇到的问题,请指教
- 树、森林及二叉树的相互转换 – 数据结构和算法50
- 用rm递归删除子目录下所有.o后缀文件
- php四种基础算法:冒泡,选择,插入和快速排序法
- java中的路径
- hive使用技巧(二)——共享中间结果集
- Centos下彻底删除oracle
- WebView加载过程进度条显示
- 较好的类名命名规则
- Xcode7 免证书真机调试
- iis中handlers
- 【Leetcode】Partition List
- GO语言实现文件上传
- Remove Invalid Parentheses--Nice