是否可以在不同的减速器上使用相同的键处理值?从所有的映射器中,我得到了具有相同键的数据,我想用不同的reducer来处理它?我的困惑是,书中说,所有值具有相同的关键将去相同的减速器…
mapper1(k1,v1),mapper2(k1,v2),mapper3(k1,v3) and so on...
我不希望所有的数据到同一个reducer…应该是这样的
reducer1(k1,v1),reducer2(k1,v2)....
假设reducer1生成sum1 reducer2生成sum2我想要这个
sum=sum2+sum1
我该怎么做呢?
具有相同键的数据将始终到相同的reducer。但是你可以选择你想要的键,所以如果你想让它们到不同的还原器,那么就选择不同的键。
如果你想基于你的reducer的输出做一个额外的组合,那么你必须做另一个MapReduce作业,将第一个作业的输出作为下一个作业的输入。这可能很快就会变得很难看,所以你可能希望看看Cascading、Pig或Hive来简化事情。
您可以为您的案例编写一个Custom Partitioner,它覆盖Hadoop MR作业的默认分区功能。
更多细节在这里:http://developer.yahoo.com/hadoop/tutorial/module5.html#partitioning