3.1 order by
order by用于对查询结果的全局排序,hive内部对于所有map task执行完成后,会将所有排序内容集中到一个reduce task上来进行排序。优点:能够实现全局有序,缺点:只能一个reduce排序操作,当数据量级大时,排序慢,并且有可能OOM失败。
3.2 sort by
用于对单个reduce局部排序,不保证全局有序,hive执行完map task后,如果mapred.reduce.tasks>1,则会将数据分配到不同的reduce上执行,通过sort by来对单个reduce task内部数据进行排序。优点:排序效率高,局部有有序,缺点:全局无序。
3.3 distribute by
distribute by用于将map task输出的结果,分散到不同的reduce task中,默认采用hash分配算法。经常于sort by进行联合使用。
3.4 cluster by
cluster by包含了distribute by操作和sort by操作,但只能是倒序排序,不能指定字段进行desc和asc排序。