首页 > 代码库 > mapreduce原理【分区,分组】

mapreduce原理【分区,分组】

  分析这个原理,的原因是:

  1、更好的理解MAPREDUCE的过程。

  2、在二次排序时会用到这个原理,二次排序要重写分区方法,重写分组方法;如果原理没搞明白,就无法写二次排序的代码。

Key

默认分区

默认分组

自定义分区

自定义分组

Abc123

1、使用系统默认分区方式,是按KEY进行分区。

 

2、KEY相同,分划分到一个分区且只能划分到一个分区。 划分方式按KEYHASHCODE进行计算。

 

3、假设设定为3个分区,则划分方式可能是

a) 分区1Abc789Cde123Cde456

b) 分区2Abc456Cde789Efg123

c) 分区3Abc123Efg456Efg789

1、默认按KEY进行分组,KEY相同的划分到同一个分组。

 

2、同一个分组的VALUE会以组中第一个值的KEYKEY发送到REDUCE进行迭代。

 

3、默认情况下,就会有9个分组,进行9REDUCE迭代。

将前三个字母截取,生成HASHCODE进行分区。假设有3个分区,分区结果如下所示:

将前三个字母截取,进行分组比较,KEY相同的划分到同一个分组中。分组情况如下所示:

Abc456

1、分区1Abc123Abc456Abc789  

2、分区2Cde123Cde456Cde789

3、分区3Efg123Efg456Efg789

1、分组1KEYAbc):Abc123Abc456Abc789  

2、分区2KEYCde):Cde123Cde456Cde789

3、分区3KEYEfg):Efg123Efg456Efg789

Abc789

Cde123

Cde456

Cde789

Efg123

Efg456

Efg789