hive查詢中的排序總結

2021-10-21 19:05:51 字數 930 閱讀 2645

四個排序總結

order by

全域性排序

reduce啟動個數為乙個

sort by

區內排序和distrbute by 結合使用

reduce個數為多個

distribute by

同上reduce個數為多個

cluster by

當distribute by 和 sort by相同時 使用。

reduce個數為多個

全域性排序(order by)

order by:全域性排序,乙個reducer,使用 order by 子句排序

asc(ascend):公升序(預設);desc(descend): 降序

每個mapreduce內部排序(sort by)

sort by每個reducer內部進行排序,對全域性結果集來說不是排序。

分割槽排序(distribute by)

distribute by:類似mr中partition,進行分割槽,結合sort by使用

注意,hive要求distribute by語句要寫在sort by語句之前。

對於distribute by進行測試,一定要分配多reduce進行處理,否則無法看到distribute by的效果。

cluster by

當distribute by和sorts by欄位相同時,可以使用cluster by方式。

cluster by除了具有distribute by的功能外還兼具sort by的功能。但是排序只能是公升序排序不能指定排序規則為asc或者desc。

hive在查詢中的過濾和排序

hive在查詢中的過濾 explain select from emp where deptno 10 and sal 2000 顯示具體過程 查詢10號部門的員工 select from emp where deptno 10 查詢名叫king的員工 select from emp where e...

hive表查詢 排序

1.全域性排序 order by 使用orderby對全域性進行排序的前提是只能有乙個reduce。order by asc公升序,order by desc降序。order by 列別名 按照別名公升序排序 order by 列名1 列名2 先按照列名1的公升序排序,如果相等再按照列名2進行排序 ...

Hive總結(十二)Hive查詢高階

通過hive提供的order by子句可以讓最終的輸出結果整體有序。但是因為hive是基於hadoop之上的,要生成這種整體有序的結果,就必須強迫hadoop只利用乙個reduce來完成處理。這種方式的 就是回降低效率。如果你不需要最終結果整體有序,你就可以使用sort by子句來進行排序。這種排序...