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
以下兩種寫法等價
hive查詢中的排序總結
四個排序總結 order by 全域性排序 reduce啟動個數為乙個 sort by 區內排序和distrbute by 結合使用 reduce個數為多個 distribute by 同上reduce個數為多個 cluster by 當distribute by 和 sort by相同時 使用。r...
Hive查詢表的優化總結
一 小表join大表 1 小表在左邊 但是新版本已經沒區別 2 開啟mapjoin 3 先過濾再join 二 大表join大表 1 空key過濾 2 空key處理 3 先過濾再join 三 group by 設定引數,使之執行兩個 mr job 第乙個mr job中,map的輸出結果會隨機分布到re...
Hive分桶表及抽樣查詢
對於非常大的資料集,使用者不需要全部查詢的結果,只需要乙個代表性的查詢結果時,可以通過對錶進行分桶抽樣。hive分桶表 先介紹一下hive桶。桶是比表或分割槽更為細粒度的資料範圍劃分。針對某一列進行桶的組織,對列值雜湊,然後除以桶的個數求餘,決定將該條記錄存放到哪個桶中。好處 1 獲得更高的查詢處理...