淺析Hive的四種排序方式

一、order by 

    order by 是要對輸出的結果進行全局排序,這就意味着只有一個reducer才能實現(多個reducer無法保證全局有序)
但是當數據量過大的時候,效率就很低。如果在嚴格模式下(hive.mapred.mode=strict),則必須配合limit使用。

二、sort by

    sort by 不是全局排序,只是在進入到reducer之前完成排序,只保證了每個reducer中數據按照指定字段的有序性,
是局部排序。配置mapred.reduce.tasks=[nums]可以對輸出的數據執行歸併排序。可以配合limit使用,提高性能。

三、distribute by 

    distribute by 指的是按照指定的字段劃分到不同的輸出reduce文件中,和sort by一起使用時需要注意,
distribute by必須放在前面

四、cluster by

    cluster by 可以看做是一個特殊的distribute by+sort by,它具備二者的功能,但是隻能實現倒敘排序的方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章