hive实现全排序:
要么用order by,但这样默认了reducer个数为1,效率低下。
要么用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的时候,最终的数据量是关键