Hive的4种排序

打印 上一主题 下一主题

主题 1614|帖子 1614|积分 4842

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、全局排序(Order by)

 
功能:全局排序,只有1个reducer(用1个Reduce Task完成全局排序,与设置的Reduce Task个数无关)
参数:ASC:升序(默认)  DESC:降序
使用:order by放在select语句的结尾
例如:
  --查询员工信息按工资降序排列
  select * from emp order by sal DESC;
 
2、每个MapReduce内部排序(Sort by)

 
功能:很多情况下不需要全局排序,此时可以使用sort by。sort by为每个reducer产生一个排序文件,每个reducer内部进行排序,不对全局结果集进行排序
参数:设置reduce个数:set mapreduce.job.reduces=3;
例如:  
  --根据部门编号降序查看员工信息
  select * from emp sort by deptno desc;  
 
3、分区排序(Distribute by)

 
功能:类似mr中的自定义分区
使用:结合sort by使用,写在sort by语句之前
分区规则:根据分区字段的Hash码与reduce的个数进行模除后,余数相同的分到一个区
例如:
  --先按照部门编号分区,再按照员工编号降序排序。
   select * from emp distribute by deptno sort by empno desc;
 
4、Cluster by

 
功能:当distribute by和sorts by字段相同时,可以使用cluster by方式
使用:cluster by除了具有distribute by的功能外还兼具sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC
例如:
  --以下两种写法等价
  select * from emp cluster by deptno;
  select * from emp distribute by deptno sort by deptno;
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表