1.order by
对查询结果集执行一个全局排序,只要使用order by就会有一个所有的数据都通过一个reducer进行处理的过程。
2.sort by
会在每个reducer中对数据进行排序,执行一个局部排序过程,保证每个reducer的输出数据都有序的(并非全局有序)
3.distribute by
distribute by是控制在map端如何拆分数据给reduce端的。hive会根据distribute by后面列,对应reduce的个数进行分发,默认是采用hash算法。distribute by常常和sort by一起组合使用
(此处后续会增加实例)
4.cluster by
当distribute by和sort by后面的字段相同时,可以使用cluster by进行简化。功能是等价的;但是只能使用升序排序,不能指定排序规则为asc或者desc。
注:Distribute by和sort by的使用场景
1.Map输出的文件大小不均。
2.Reduce输出文件大小不均。
3.小文件过多。
4.文件超大。