MapReduce中的排序

MapReduce在shuffle阶段经历三次排序:Map的溢写、Map合并溢写文件、Reduce输入阶段的归并排序。默认对KV键值对按key排序,包括局部排序、完全排序和辅助排序等类型。
摘要由CSDN通过智能技术生成

哪些阶段存在排序

1. 在MapReduce的shuffle阶段共有三次排序,分别是:

  • Map的溢写(spill)阶段:根据分区及key进行快速排序;
  • Map合并溢写文件阶段:将同一个分区的多个溢写文件经过多轮归并排序最终合并为一个文件;
  • Reduce输入阶段:将同一个分区,不同map task的数据文件进行归并排序

2. 在MapReduce的整个过程中,默认对输出的KV键值对按照key进行快速排序

  • Map输出排序:即map溢写排序
  • reduce输出排序:reduce输出时会对KV键值对按照key进行排序
补充:以上排序都是基于KV键值对的key进行排序的,键的排序顺序是由RawComparator控制,规则如下
(1)若属性mapred.output.key.comparator.class已经被显式设置,或者通过Job类的setSortComparatorClass()方法进行设置,则使用该类的实例
(2)否则,键必须是WritableComparable的子类,并使用针对该键类的已登记的comparator
(3)如果还没有已登记的comparator,则使用RawComparator将字节流反序列化为一个对象,再由WritableCompa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值