hive中order by ,sort by ,distribute by 和 cluster by

总说:
笼统地看,这四个在hive中都有排序和聚集的作用,然而,它们在执行时所启动的MR却各不相同。

细讲:
order by:

order by会对所给的全部数据进行全局排序,并且只会“叫醒”一个reducer干活。它就像一个糊涂蛋一样,不管来多少数据,都只启动一个reducer来处理。因此,数据量小还可以,但数据量一旦变大order  by就会变得异常吃力,甚至“罢工”。

sort by:

sort by是局部排序。相比order  by的懒惰糊涂,sort by正好相反,它不但非常勤快,而且具备分身功能。sort by会根据数据量的大小启动一到多个reducer来干活,并且,它会在进入reduce之前为每个reducer都产生一个排序文件。这样的好处是提高了全局排序的效率。

distribute by:

distribute by的功能是:distribute  by 控制map结果的分发,它会将具有相同字段的map输出分发到一个reduce节点上做处理。即就是,某种情况下,我们需要控制某个特定行到某个reducer中,这种操作一般是为后续可能发生的聚集操作做准备。

https://blog.csdn.net/qq_40795214/article/details/82190827

猜你喜欢

转载自www.cnblogs.com/gouhaiping/p/12652983.html