是否可以在不同的异径管上用相同的键处理值?从所有的Map器中,我得到了相同密钥的数据,我想用不同的缩减器来处理它?我的困惑是这本书说,所有的值与同一个键将去同一个减速机。。。
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条答案
按热度按时间zbdgwd5y1#
具有相同键的数据将始终传送到同一个减速机。但是你可以选择你想要的任何键,所以如果你想让它们去不同的减速器,那么就选择不同的键。
如果要基于reducer的输出执行其他组合,则必须执行另一个mapreduce作业,将第一个作业的输出作为下一个作业的输入。这会很快变得难看,所以您可能希望看看级联、pig或hive来简化事情。
44u64gxh2#
您可以为您的案例编写一个自定义分区器,它覆盖hadoop mr job的默认分区功能。
更多详情请参见:http://developer.yahoo.com/hadoop/tutorial/module5.html#partitioning