【云计算】hive查询-排序问题思路
小标 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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved