6

是否可以在不同的减速器上处理具有相同键的值?从所有映射器中我得到具有相同键的数据,我想用不同的减速器处理它?我的困惑是这本书说所有具有相同键的值都将进入同一个减速器......

 mapper1(k1,v1),mapper2(k1,v2),mapper3(k1,v3) and so on...

我不希望所有数据都到同一个减速器……应该是这样的,

 reducer1(k1,v1),reducer2(k1,v2)....

让我们说reducer1产生sum1和reducer2产生sum2,我想要那个

 sum=sum2+sum1

我该怎么做?

4

2 回答 2

5

具有相同 key 的数据将始终进入同一个 reducer。但是你可以选择任何你想要的key,所以如果你想让它们去不同的reducer,那么就选择不同的key。

如果你想根据你的 reducer 的输出做一个额外的组合,那么你必须做另一个 MapReduce 作业,将第一个作业的输出作为下一个作业的输入。这可能会很快变得丑陋,因此您可能希望查看CascadingPigHive来简化事情。

于 2013-04-23T18:10:21.363 回答
2

您可以为您的案例编写一个自定义分区器,它会覆盖 Hadoop MR 作业的默认分区功能。

更多细节在这里:http: //developer.yahoo.com/hadoop/tutorial/module5.html#partitioning

于 2013-04-23T18:36:46.520 回答