首页 > 代码库 > mapreduce原理【分区,分组】
mapreduce原理【分区,分组】
分析这个原理,的原因是:
1、更好的理解MAPREDUCE的过程。
2、在二次排序时会用到这个原理,二次排序要重写分区方法,重写分组方法;如果原理没搞明白,就无法写二次排序的代码。
Key | 默认分区 | 默认分组 | 自定义分区 | 自定义分组 |
Abc123 | 1、使用系统默认分区方式,是按KEY进行分区。
2、KEY相同,分划分到一个分区且只能划分到一个分区。 划分方式按KEY的HASHCODE进行计算。
3、假设设定为3个分区,则划分方式可能是 a) 分区1:Abc789,Cde123,Cde456 b) 分区2:Abc456,Cde789,Efg123 c) 分区3:Abc123,Efg456,Efg789 | 1、默认按KEY进行分组,KEY相同的划分到同一个分组。
2、同一个分组的VALUE会以组中第一个值的KEY为KEY发送到REDUCE进行迭代。
3、默认情况下,就会有9个分组,进行9次REDUCE迭代。 | 将前三个字母截取,生成HASHCODE进行分区。假设有3个分区,分区结果如下所示: | 将前三个字母截取,进行分组比较,KEY相同的划分到同一个分组中。分组情况如下所示: |
Abc456 | 1、分区1:Abc123,Abc456,Abc789 2、分区2:Cde123,Cde456,Cde789 3、分区3:Efg123,Efg456,Efg789 | 1、分组1(KEY是Abc):Abc123,Abc456,Abc789 2、分区2(KEY是Cde):Cde123,Cde456,Cde789 3、分区3(KEY是Efg):Efg123,Efg456,Efg789 | ||
Abc789 | ||||
Cde123 | ||||
Cde456 | ||||
Cde789 | ||||
Efg123 | ||||
Efg456 | ||||
Efg789 |