1 Order by
功能:將查詢結果集中的所有數據,進行全局排序。
底層原理:將查詢結果中的所有數據,都放在一個reducer中,進行全局排序。
特點:因爲只有一個reducer進行排序,當數據量很大時會非常慢。
2 Sort by
功能:數據發送到多個reducer,sort by 在每個reducer內進行排序,即進行局部排序。
特點:
在order by之前,可以先進行order by,這樣能夠提高後面全局排序的效率。
3 Partition by
功能:根據某一列將數據分組,常與order by 在over中組合使用。(注意是分組,不是分到多個reducer中,所以與order by一起使用,而不是和sort by一起。)
與group by的區別是,partition by返回分組中的所有數據,而group by 與聚合函數一起使用,往往只返回一條數據。
4 distribute by col
功能:col相同行,分發到同一個reducer中。此時常配合sort by使用。