order by&sort by&distribute by&cluster by
在生产环境中order by用的较少,容易导致OOM(内存溢出/内存用完了)
- order by 语句: 是全局排序,只有一个reduce
- sort by 语句: 是单reduce排序,分区内排序
- distribute by语句: 是分区字段排序;类似MR中partition,进行分区,结合sort by使用
- cluster by语句:当distribute by和sort by字段相同的时候,可以使用cluster by方式。cluster by除了具有distribute by的功能外还兼具了sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC。
可以确保类似的数据的分发到同一个reduce task中,并且保证数据有序防止所有的数据分发到同一个reduce上,导致整体的job时间延长
cluster by语句的等价语句:
distribute by Word sort by Word ASC