笼统地看,这四个在hive中都有排序和聚集的作用,然而,它们在执行时所启动的MR却各不相同。
1、order by
order by会对所给的全部数据进行全局排序,并且只会“叫醒”一个reducer干活。它就像一个糊涂蛋一样,不管来多少数据,都只启动一个reducer来处理。因此,数据量小还可以,但数据量一旦变大order by就会变得异常吃力,甚至“罢工”。
- order by(ASC | DESC):类似mysql
- 只使用一个Reducer执行全局数据排序
- 速度慢,应提前做好数据过滤
- 支持使用CASE WHEN或表达式
- 支持按位置编号排序,需要设置:set hive.groupby.orderby.position.alias=true
select * from offers order by case when offerid = 1 then