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

本文介绍了MapReduce作业中DistributeBy和SortBy的使用,以及它们如何影响Hive查询的执行。DistributeBy按照指定字段对数据进行分布,SortBy则在每个Reducer内部进行局部排序。结合使用可以实现输出文件的全局排序,但牺牲了SortBy的并行性。OrderBy则执行全局排序,而SortBy仅做局部排序,提高了效率。
摘要由CSDN通过智能技术生成

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输出的数据都是有序的(但并非全局有序),这样可以提高后续进行全局排序的效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值