是否可以在不同的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
我应该怎么做?
答案 0 :(得分:5)
具有相同键的数据将始终转到相同的reducer。但是你可以选择你想要的任何键,所以如果你想让它们去不同的减速器,那么只需选择不同的键。
如果要根据reducers的输出执行其他组合,则必须执行另一个MapReduce作业,第一个作业的输出作为下一个作业的输入。这可能会很快变得难看,因此您可能希望查看Cascading,Pig或Hive来简化操作。
答案 1 :(得分:2)
您可以为您的案例编写自定义分区程序,它会覆盖Hadoop MR作业的默认分区功能。
此处有更多详情:http://developer.yahoo.com/hadoop/tutorial/module5.html#partitioning