MapReduce 二次排序总结

本文详细介绍了MapReduce的二次排序,包括需求背景、解决方案的四个步骤:改装Map结构以组合新Key值,自定义分区确保相同字段的Key进入同一Reduce,设置Key比较函数进行多级排序,以及设置分组比较器决定不同Key的Reduce分配。通过这些步骤,实现了对MapReduce输出的复杂排序需求。
摘要由CSDN通过智能技术生成
需求
1、输入数据:
keyA	1
keyB	3
keyB	77
keyB	54
keyA	2
keyC	22
keyC	221
keyC	20

2、目标输出
keyA	1,2
keyB	3,54,77
keyC	20,22,221
解决思路

在这里插入图片描述

STEP 1. 改装Map结构,组合成一个新的Key值

MR框架不管是 默认排序 或者是 自定义排序 都只是对Key值进行排序,但我们可以将原始数据的Key值和其对应的Value值 组合成一个新的Key值。即原始数据的Map改装如下:

keyA,1	1
keyB,3	3
keyB,77	77
..
STEP 2. 自定义分区 setPartitionerClass,将Key第一个字段相同 放到一个Reduce中

对新的Key 进行排序,需要自定义 分区处理器(如果 新Key的 第一个字段相同,放到同一个Reduce中进行分组合并)
Map Shuffer 分区操作后,输出的数据流如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值