限制Map reduce API中reducer的输出

时间:2016-10-08 09:01:27

标签: hadoop mapreduce hadoop2 reduce

在我的mapreduce程序中,我的减速器输出产生100万行输出,但我只需要初始的前3行输出。为此我在Reducer类中维护一个实例变量来计算它看到的记录数量,并在3之后停止发射它们。但仍然减速器必须通过所有100万条记录。有没有办法,我可以在读取前3条记录后立即停止执行,以提高代码的性能。

此外,我必须将reducer计数为1,这样我的实例变量计数才能正常工作,这也是为了降低程序的性能。

谢谢,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在你的情况下你可以将reducers的数量设置为1,在这个类中你可以计算前3行并为它们发出输出,然后忽略任何其他没有发出的输入。这并不会阻止框架继续为映射器计算的所有键调用reduce()方法。

如果可能,您应该减少映射器级别,组合器或分区器的输出。

AFAIK没有办法让reduce停止这个过程。