sort by和order by的区别

hive实现全排序:

  1. 要么用order by,但这样默认了reducer个数为1,效率低下。

  2. 要么用sort by+order by,sort by过程可以设置reducer个数(n),order by过程用n个reducer的输出文件进行一次全排序,得到最终的结果。

使用sort by或者order by,会根据hive.exec.reducers.bytes.per.reducer计算reduce个数,如果reduce的数量小于这个值,则最终只有一个reduce,无论使用哪个排序都是一样,如果大于这个数,则sort by 是每个reduce内排序,order by是全局排序,所以选择使用sort by和order by的时候,最终的数据量是关键

Author: Tunan
Link: http://yerias.github.io/2021/07/18/hive/36/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.