小标
2019-02-11
来源 :
阅读 1104
评论 0
摘要:本文主要向大家介绍了【云计算】hive查询-排序问题思路,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】hive查询-排序问题思路,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
select * from test_table order by income; select * from test_table sort by income; Insert overwrite local directory ‘/home/hadoop/out’ select * from test_table destribute by city_id; SELECT col1, col2 FROM t1 CLUSTER BY col1;
order by 全局有序,一个reducer,输入规模较大时建议使用limit
sort by 不是全局排序,多个reduce,每个reduce只保证自己产出的数据是排序的
再对产出的所有文件做一次归并排序就可以了,也可用limit大大加快查询速度
distribute by 按照所选字段划分reduce,注意数据的均衡
cluster by col1= distribute by col1 sort by col1 排序只能是倒序排序
分析窗口函数
聚合函数:COUNT () 、SUM () 、MIN () 、MAX () 、AVG ()
排名:RANK()、ROW_NUMBER()、DENSE_RANK()
比例计算:CUME_DIST()、PERCENT_RANK()
分片:NTILE()
窗口定位函数:LEAD()、LAG()、FIRST_VALUE()、LAST_VALUE()
Note1 :分组后处理需要在后面加OVER (PARTITION BY col1),全局处理则加一个空的OVER()就可以了。
Note2 :上面的RANK()、NTILE()、DENSE_RANK()、CUME_DIST()、PERCENT_RANK()以及窗口定位函数LEAD()、LAG()不能和Windows子句一起使用。
CUME_DIST: 统计小于等于当前值的行数占分组内总行数比例 PERCENT_RANK: (分组内当前行RANK-1)/(分组总行-1) 统计小于等于当前薪水的员工在整个公司以及该部门所占比例 SELECT dept, userid, sal, CUME_DIST() OVER(ORDER BY sal) AS rn1, CUME_DIST() OVER(PARTITION BY dept ORDER BY sal) AS rn2 FROM lxw1234; 结果: dept userid sal rn1 rn2------------------------------------------- d1 user1 1000 0.2 0.3333333333333333 // <=1000的行数为1, rn1=1/5 = 0.2 d1 user2 2000 0.4 0.6666666666666666 // <=2000的行数为2, rn2=2/3=0.66666666666 d1 user3 3000 0.6 1.0 d2 user4 4000 0.8 0.5 d2 user5 5000 1.0 1.0
NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值
统计一个cookie,pv数最多的前1/3的天
分析窗口函数-窗口定位函数
LEAD(col,n,default):对当前列col向下查找n条记录,n不指定默认1,default不指定默认为null
LAG(col,n,default):对当前列col向上查找n条记录,n不指定默认1,default不指定默认为null
FIRST_VALUE(col)、LAST_VALUE(col):分别为在当前分组中查找该列的第一个、最后一个值
分组聚合查询Group by
CUBE : 根据group by的所有维度的所有组合进行union
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号