在我的mapreduce程序中,我的reducer的输出产生100万行输出,但我只需要初始的前3行输出。为此,我在我的Reducer类中维护一个实例变量,该变量计算它看到了多少条记录,并在3之后停止发出它们。但是reducer仍然需要遍历这100万条记录。是否有一种方法可以在读取前3条记录时立即停止执行以提高代码的性能?
这里我还必须让reducer计数为1,这样我的实例变量计数才能正常工作,这也会降低程序的性能。
谢谢,非常感谢你的帮助。
在您的例子中,您可以将reducer的数量设置为1,在这个类中,您可以计算前3行并为它们发出输出,然后忽略任何其他不发出任何内容的输入。这并不会阻止框架继续为映射器计算出的所有键调用reduce()方法。
如果可能的话,应该减少映射器、组合器或分区器的输出。
恐怕没有办法让reduce停止这个进程。