hive表查詢 排序

2022-07-02 14:06:11 字數 837 閱讀 8720

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 獲得更高的查詢處理...