mapreduce二次排序

map和reduce之间交互过程

里面有三个重要的概念:

分区partition

根据key中一个或几个字段,来判断,是要把这条数据发送到哪个reducer

排序sort

根据key中一个或几个字段,来判断,在map输出结果里数据的排序方式,和reduce归并排序的时候数据根据哪几个字段进行比较

分组group

在reducer阶段,根据哪几个字段,来将数据组合成  一个key对多个value(迭代器)的形式,输入到reduce方法中

 可以根据key中的部分字段进行分组,但是输入到reducer方法中的那个key是一个分组中,第一条数据的key(包含所有字段)

 

 

在map阶段 先排序,然后在 reduce里归并排序的方式有一个好处,就是不需要在reduce里面,把所有数据拿过来进行全量排序,

在归并的过程中,可以做到数据处理的顺序首先是 分组有序,然后同一分组内数据还可以根据sort进行排好序的

 

一般情况下,只根据key里只有一个字段,既作为分区字段,有作为sort字段,还作为group字段

这样在values迭代器里数据是无序的,如果这个values数据量很大,又想排序后处理,那么就不合适了

这时候可以根据想要排序的字段进行二次排序,这样输入到reduce的values本身就是排好序的

 

 

参考:https://www.cnblogs.com/DreamDrive/p/7693452.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值