
sort by是在每个reduce中有序。order by 是全局排序。
Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件。最终导致了在HADOOP环境下很难对数据进行全局排序,如果在HADOOP上进行order by全排序,会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。一种替代的方案则是放弃全局有序,而是分组有序,即sort by排序,比如不求全百度最高的点击词排序,而是求每种产品线的最高点击词排序,使用order by会引发全局排序。
