[Hive]Hive排序優化

TOMOCAT發表於2018-08-15

1、從order by 到 sort by
order by:全域性排序,大資料集會消耗太過漫長的時間
sort by:只會在每個reducer 中對資料進行排序,也就是執行區域性排序過程,只能保證每個reducer的輸出資料都是有序的(但並非全域性有序)
2、sort by+distribute by
distribute by控制map的輸出在reducer中是如何劃分的。假設我們希望具有相同股票交易碼的資料在一起處理。那麼我們可以使用distribute by來保證具有相同股票交易碼的記錄會分發到同一個reducer中進行處理,然後使用sort by來按照我們的期望對資料進行排序。
3、cluster by 
如果distribute by和sort by涉及到的列完全相同,且採用的是升序排序方式,則相當於cluster by。
注意:使用distribute by 與sort by語句或簡化版的cluster by語句會剝奪sort by的並行性,然而可以實現輸出檔案是全域性排序的。

相關文章