hsql的cluster by代替含有sort by的distribute by

hsql的cluster by代替含有sort by的distribute by,第1张

hsql的cluster by代替含有sort by的distribute by

distribute by控制map的输出在reduce中是如何划分的。
mapreduce job中传输的所有数据都是按照键值对的方式进行组织的,因此hive在将用户的查询语句转换成mapreduce jib时,其必须在内部使用这个功能。

例如sql:

select s.ymd,s.symbol,s.price_close from stocks s 
distribute by s.symbol
sort by s.symbol asc ,s.ymd asc;

等价于

select s.ymd,s.symbol,s.price_close from stocks s 
cluster by s.symbol

使用cluster by语句或distribute by …sort by 语句会剥夺 sort by的并行性,然而这可以实现输出文件的数据是全局排序的。
Oder by:对查询的结果进行一个全局的排序。
sort by :只会在每个reducer中对数据进行排序,也就是执行一个局部排序的过程。这可以保证每个reducer输出的数据都是有序的(但并非全局有序),这样可以提高后续进行全局排序的效率。

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

原文地址: https://outofmemory.cn/zaji/5635904.html

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

发表评论

登录后才能评论

评论列表(0条)

保存