1.hive的四大by
1.1order by(全局排序)
只有一个reduce,这里无论你设置多少个reduce,都是一个
优点:全局排序
缺点:当数据量大的时候,耗时长,效率低,适用于较小数据量的场景
1.2sort by(分区内排序)
对每一个reduce内部的数据进行排序,全局结果来说不是排序的
只能保证每一个reduce输出的文件中的数据是按照规定字段排序的
适用于数据量大,但是对排序要求不严格的场景,可以大幅提高执行效率
1.3distribute by(分区排序)
控制特定的key到指定的reducer,方便后续的聚合操作,类似于MR中自定义分区,一般结合sort by使用
需要预先设置reduce个数,否则不会启动相应的reducer进行任务的执行,导致最后不能完全分区。
注意:
(1)distribute by 要在 sort by 之前
(2)distribute by 的分区规则是根据分区字段的hash码与reduce的个数进行取模后,余数相同的分到一个分区
1.4cluster by
当distribute by 和 sort by 字段相同的时候,可以写成cluster by
但是这个排序,只能升序