1.全局排序 order by
使用orderby對全局進行排序的前提是只能有一個reduce。order by ASC升序,order by DESC降序。
order by 列別名:按照別名升序排序
order by 列名1 列名2:先按照列名1的升序排序,如果相等再按照列名2進行排序
2.局部排序 sort by
sort by會對每個mapreduce內部進行排序,對全局結果來說並不完全有序。
使用sort by排序的過程:
2.1設置reduce的個數
2.2使用sort by查詢語句進行排序
2.3將查詢結果導入文件中
3.分區排序 distribute by
distribute by將數據進行分區,結合sort by使用對不同分區進行排序
在使用這個語法前要先設置分區的個數同2.1
先按照s_id進行分區,再按照s_score進行排序,最后將查詢的結果加載到本地
結果:
在這個文件中記錄的都是id為04的數據,可見distribute by的作用,第三欄是成績,按照升序排列,可見sort by的作用。
4.cluster by
當distribute by的字段與sort by字段相同時可以使用cluster by,但是cluster by的排序只能是倒序,不能指定ASC或者DESC
以下兩種寫法等價