下面以《Hadoop权威指南》中的一个例子来解释分区与分组的关系。
对于一般的键,只需要key值相同,则对应的value就会分配至同一个 reduce中;
对于复合键,形式为TextPair<key1,key2>(关于复合键,可参考另一篇关于TextPair的博文http://blog.csdn.net/until_v/article/details/40867973),通过控制 key1来进行分区,则具有相同的 key1的值会被划分至同一个分区中,但此时如果 key2不相同,则不同的key2会被划分至不同的分组。如
注:Partition代表分区,Group代表分组;
1900、1901为key1的值;35℃、34℃为key2的值
通过控制任务的分组(job.setGroupingComparatorClass(GroupComparator.class),可以忽略key2的值,使相同的 key1的值划分至同一组,从而使key1相同的数据能够迭代在一个 reduce中。如:
时间: 2024-11-05 14:57:09