order by和sort by的区别

order by和sort by的区别,第1张

order by和sort by的区别

新年的第一天,希望远在几百公里外的她现在睡得正香

问题:

        在学习hive的时候,面对一些东西,总是模棱两可。直接切入话题,sort by和order by的联系与区别。

分析:        

        hive中的order by语句和其它的sql一样,都会对查询结果集进行全局排序,也就是说所有的数据集都会汇集到一个reduce当中去进行排序,对于大数据集,这个过程可能会消耗太过漫长的时间来执行。

        hive增加了一个可以选择的方式,那就是sort by。只会在每个reduce里面进行排序,什么意思呢?如果reduce只有一个的话,那么sort by 和 order by的功能就是一样的,都是对全局进行一个排序,如果reduce的个数多余1个的话,作用就不一样了。sort by如果有两个reuce,那么查询集会分到两个reduce里面。分别在每一个reduce里面进行局部排序,最后将局部排序后的数据汇总起来,这样可以提高全局排序的效率。

实践证明:

首先看一个数据集

        

 

 

在上面的图中,就是order by的结果,因为order by只在一个reduce里面进行全局排序。

下面我们看一下只有一个reduce时的sort by。

 

可以看出来,在只有一个reduce的时候,sort by和order by发挥的作用是一致的。

下面来看reduce为2的情况下,sort by的结果是否还是全局排序。

  1. 首先设置reduce的个数为2
     

     2.在reduce个数为2的情况下的执行信息
                

 

     3.reduce个数为2的执行结果

        可以看到,我们最后的结果集并不是完全有序的,是每个reduce里面的局部有序,汇总到一块。只能保证每个reduce里面的结果是局部有序的,不同的reduce的输出就可能会有重叠

        总结:关于sort by和order by,通常用的都是Order by。什么时候用sort by呢?当不想hdfs的小文加比较多的时候,我们可以用distuibuted by 和 sort by进行控制小文件的数量。

今天晚上,我会将sort by和distuibuted by的用法写给大家。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5690294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存