1 Order by
功能:将查询结果集中的所有数据,进行全局排序。
底层原理:将查询结果中的所有数据,都放在一个reducer中,进行全局排序。
特点:因为只有一个reducer进行排序,当数据量很大时会非常慢。
2 Sort by
功能:数据发送到多个reducer,sort by 在每个reducer内进行排序,即进行局部排序。
特点:
在order by之前,可以先进行order by,这样能够提高后面全局排序的效率。
3 Partition by
功能:根据某一列将数据分组,常与order by 在over中组合使用。(注意是分组,不是分到多个reducer中,所以与order by一起使用,而不是和sort by一起。)
与group by的区别是,partition by返回分组中的所有数据,而group by 与聚合函数一起使用,往往只返回一条数据。
4 distribute by col
功能:col相同行,分发到同一个reducer中。此时常配合sort by使用。