相同的关键不同减速机(HADOOP)?

时间:2013-04-23 17:36:25

标签: java hadoop mapreduce key-value reduce

是否可以在不同的reducer上处理具有相同键的值?从所有映射器我得到相同的数据的数据,我想用不同的reducer处理它?令我感到困惑的是,这本书说所有带有相同键的值都会转到相同的缩减器......

 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

我应该怎么做?

2 个答案:

答案 0 :(得分:5)

具有相同键的数据将始终转到相同的reducer。但是你可以选择你想要的任何键,所以如果你想让它们去不同的减速器,那么只需选择不同的键。

如果要根据reducers的输出执行其他组合,则必须执行另一个MapReduce作业,第一个作业的输出作为下一个作业的输入。这可能会很快变得难看,因此您可能希望查看CascadingPigHive来简化操作。

答案 1 :(得分:2)

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

此处有更多详情:http://developer.yahoo.com/hadoop/tutorial/module5.html#partitioning