当map-reduce代码中有多个reducer时,它们之间没有任何通信。但是当执行聚合之类的操作时,所有的还原器一起产生一个最终输出。当它们之间没有通信时,聚合是如何发生的?是通过写入上下文吗?(context.write())
laik7k3q1#
如果将reduce tasks的数量设置为1(这也是默认值),那么所有reduce()方法都由同一个任务运行,因此不需要通信。如果将reduce任务数设置为n,则将有n个输出文件,而不仅仅是1个。这些结果确实是独立的。也许,您应该指定“聚合”的含义。
1条答案
按热度按时间laik7k3q1#
如果将reduce tasks的数量设置为1(这也是默认值),那么所有reduce()方法都由同一个任务运行,因此不需要通信。
如果将reduce任务数设置为n,则将有n个输出文件,而不仅仅是1个。这些结果确实是独立的。也许,您应该指定“聚合”的含义。