全局排序: order by
select * from table_name order by col_name desc;
HADOOP上进行order by全排序,会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。
局部排序: distribute by + sort by
被distribute by设定的字段为KEY,数据会被HASH分发到不同的reducer机器上,然后sort by会对同一个reducer机器上的每组数据进行局部排序。
cluster by的功能就是distribute by和sort by相结合
select * from table_name distribute by col_name sort by col_name <=> select * from table_name cluster by col_name