Hive总结
来源:互联网 发布:金蝶软件报价 编辑:程序博客网 时间:2024/05/14 21:47
Hive常用函数参看:http://blog.csdn.net/wisgood/article/details/17376393
hive的牛帖子:http://blog.csdn.net/haojun186/article/details/7977565
个人总结:
区别 like,rlike,regexp,regexp_extract:
like:匹配2014.10.22,来自sm.cn的pv,uv数
select count(dt)pv,count(distinct clientid)uv from pv_partitioned where dt='2014-10-22' and url like '%sm.cn%';
rlike:
select count(dt)pv,count(distinct clientid)uv from pv_partitioned where dt='2014-10-22' and url rlike '^http://3g.zhuanjia.xywy.com/yyzj(-(\\w)+){3}.htm\'
regexp:
select count(dt)pv,count(distinct clientid)uv from pv_partitioned where dt='2014-10-22' and url regexp '^http://3g.zhuanjia.xywy.com/yyzj(-(\\w)+){3}.htm\'
事实证明regexp与rlike基本上可以通用,至少我目前认为是这样的。还希望大神指教。
regexp_extract:
select count(dt)pv,count(distinct clientid)uv from pv_partitioned where dt='2014-10-22' and url regexp_extract(url,'^http://3g.zhuanjia.xywy.com/yyzj(-(\\w)+){3}.htm\',0)!='';
真心话平常用的regexp_extract和like比较多,用regexp_extract是因为现在的很多url地址比较奇怪,在html结尾后还是会有很多奇怪的参数(暂且这么认为),如果直接用rlike或regexp匹配的话,往往拿到的数据不太对。用的like多,更多的是因为简单。
关于w之前的“\\”,则是在hive中需要转义,在此需要提醒大家的是,在参数中往往会有“?”,则在写hive语句的时候也是需要转义的,需要用“\\?”。
left semi join的用法和left outer join的用法:
left semi join成为左半开连接,是用来很好的替代hive中不支持in操作的。左半开连接会返回左边表的记录,前提是其记录对于右边表满足on语句中的判定条件。需要注意的是,在select和where语句中不能引用到右边表中的字段。
select count(dt)pv,count(distinct clientid)uv from pv_partitioned_rc a left semi join (select clientid from pv_partitioned_rc where dt='2014-10-14' and redoman like '%sm.cn%' and regexp_extract(url,'^http://3g.zhuanjia.xywy.com/plus-list-(\\w)+.htm',0)!='')b on a.clientid=b.clientid
left outer join称为左外连接,在这种join连接操作中,join操作符左边表中符合where字句的所有记录将会被返回,join操作符右边表中如果没有符合on后面连接条件的记录时,那么从右边表指定选择的列的值将会是null.
可以在进行查询时,尽量对SQL进行优化,
1. 在用join作表连接时,不使用select * fom,只select需要的字段(如:select cn , jewel_total ,dt fom ….)
2. 在查询时间跨度较大(如时间跨度为1年以上)的语句时,在语句的最前面加上set mapred.map.tasks=5; set mapred.reduce.tasks=1;
3. 尽量不要开多个窗口同时进行查询,尽量保持在4个以下;
4. 类似 select cn from tlbb.logon_log where dt<=’2015-08-20’ 这种基本算是全表搜索的语句不建议使用,因为天龙、刀剑等项目年份久远,基本都有6年以上的数据量,应该加上dt>’yyyy-mm-dd’的条件作一下限制
- [hadoop hive] hive总结
- Hive总结
- Hive总结
- Hive总结
- hive总结
- hive总结
- Hive总结
- HIVE总结
- hive优化总结
- hive优化总结
- Hive 数据倾斜总结
- Hive深入应用总结
- hive查询优化总结
- hive查询优化总结
- Hive优化总结
- hive查询优化总结
- hive 数据倾斜总结
- hive优化总结
- C# - is
- 如何测试登录窗口
- 搭建高可用mongodb集群(三)—— 深入副本集内部机制
- nginx 的多个参数解析
- 10大最适合编程的字体推荐下载,让代码看起来更美更舒服(转载)
- Hive总结
- mvn package 打包常见错误及解决方案
- 用交换的程序来理解函数传递
- 搭建高可用mongodb集群(四)—— 分片
- 第九周项目四——我的小九九
- C# - as
- Mybatis分页插件更新
- 大学
- curl用法总结