hive表之 order by、sort by、cluster by、distribute by 對比

order by 語法操作

  • order by 是進(jìn)行全局排序,在整個(gè)作業(yè)執(zhí)行過程中,只產(chǎn)生一個(gè) reducer,在數(shù)據(jù)量過大的時(shí)候,執(zhí)行的時(shí)間會很長 。事實(shí)上,這與分布式的思想是相背離的。

創(chuàng)建測試表并加載數(shù)據(jù)。

hive> create table recommend.test_tb(userid string, name string, age int)
                               > row format delimited
                               > fields terminated by ',';

數(shù)據(jù)加載。

hive> select * from recommend.test_tb;
OK
1   Jack    21
3   Tom 19
5   Will    20
4   Lily    28
7   zs  25
6   lss 22

使用 order by 語義進(jìn)行處理, order by 語義有兩個(gè)排序方式的選擇--升序和降序,其中默認(rèn)為升序。

hive> select * from recommend.test_tb order by userid;
OK
1   Jack    21
3   Tom 19
4   Lily    28
5   Will    20
6   lss 22
7   zs  25

sort by 語法

  • sort by 會在 mapper 輸出時(shí)對進(jìn)入每個(gè) reducer 的數(shù)據(jù)進(jìn)行一次排序。它的數(shù)據(jù)處理是并行的,而且在每個(gè) reducer 中是有序的,然而,在全局范圍內(nèi)并不是嚴(yán)格有序的。當(dāng)然,如果將 reducer 數(shù)量限定為 1,也可保證它的全局有序性,此時(shí)起到的作用跟 order by 極為相似,但是不符合分布式的思想。
  • sort by 可以在查詢時(shí)指定 reducer 的個(gè)數(shù),例如:
hive> set mapred.reduce.tasks=;
hive> select * from recommend.test_tb order by userid;
  • sort by 是在是跟句 hash 算法將 mapper 輸出數(shù)據(jù)分發(fā)到每個(gè) reducer 中。因此,這種方式不同的 reducer 中的數(shù)據(jù)雖然有序,但是范圍是有重疊的。

distribute by 語法

  • distribute by 保證不同的 reducer 中的數(shù)據(jù)不存在重疊,但是不能保證單個(gè) reducer 中的數(shù)據(jù)是有序的是。因此,通常情況下,想要得到有序非重疊的 reducer ,可以將 distribute by 與 sort by 結(jié)合使用。

Cluster by 語法

  • Cluster by 的用法就行將 distribute by 與 sort by 結(jié)合使用,輸出我們想要的結(jié)果,例如:
hive> select * from recommend.test_tb distribute by userid sort by userid;
hive> select * from recommend.test_tb cluster by userid;
  • 使用 Cluster by 可以得到 reducer 內(nèi)有序且不同 reducer 之間不重疊的數(shù)據(jù)。
  • cluster by 只能按照降序進(jìn)行排序,不能指定升序(asc)和降序(desc)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容