**order by:**对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)。只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。
**sort by:**不是全局排序,在数据进入reducer前完成排序。因此,如果用sort by进行排序,并且设置mapred.reduce.task>1,则sort by只能保证每个reducer的输出有序,不保证全局有序。
**distribute by:**类似MR中的partition ,进行分区,结合sort by使用。(hive要求distribute by 语句要写在sort by语句之前)
**cluster by:**当distribute by和sort by字段相同时,可以使用cluster by方式。排序只能时升序,不能指定排序规则。