1、全局排序(Order by) 功能:全局排序,只有1個reducer(用1個Reduce Task完成全局排序,與設置的Reduce Task個數無關) 參數:ASC:升序(預設) DESC:降序 使用:order by放在select語句的結尾 例如: --查詢員工信息按工資降序排列 sele ...
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;