在我的mapreduce程序中,我的减速器输出产生100万行输出,但我只需要初始的前3行输出。为此我在Reducer类中维护一个实例变量来计算它看到的记录数量,并在3之后停止发射它们。但仍然减速器必须通过所有100万条记录。有没有办法,我可以在读取前3条记录后立即停止执行,以提高代码的性能。
此外,我必须将reducer计数为1,这样我的实例变量计数才能正常工作,这也是为了降低程序的性能。
谢谢,非常感谢您的帮助。
答案 0 :(得分:0)
在你的情况下你可以将reducers的数量设置为1,在这个类中你可以计算前3行并为它们发出输出,然后忽略任何其他没有发出的输入。这并不会阻止框架继续为映射器计算的所有键调用reduce()方法。
如果可能,您应该减少映射器级别,组合器或分区器的输出。
AFAIK没有办法让reduce停止这个过程。