面以《Hadoop权威指南》中的一个例子来解释分区与分组的关系。
Hadoop权威指南(中文版-带目录索引)PDF 下载见 http://www.linuxidc.com/Linux/2013-05/84948.htm
Hadoop权威指南(中文第2版)PDF http://www.linuxidc.com/Linux/2012-07/65972.htm
对于一般的键,只需要key值相同,则对应的value就会分配至同一个 reduce中;
对于复合键,形式为TextPair<key1,key2>(关于复合键,可参考另一篇关于TextPair的博文 http://www.linuxidc.com/Linux/2014-11/109360.htm),通过控制 key1来进行分区,则具有相同的 key1的值会被划分至同一个分区中,但此时如果 key2不相同,则不同的key2会被划分至不同的分组。如
注:Partition代表分区,Group代表分组;
1900、1901为key1的值;35℃、34℃为key2的值
通过控制任务的分组(job.setGroupingComparatorClass(GroupComparator.class),可以忽略key2的值,使相同的 key1的值划分至同一组,从而使key1相同的数据能够迭代在一个 reduce中。如: