【发布时间】:2016-07-24 17:55:35
【问题描述】:
从一些文章中,我知道 combiner 会在 mapper 端和 reducer 端运行,并且会运行 0~N 次。而且我知道无论是否调用组合器,我们的 mapreduce 程序都应该得到相同的结果。
但我有一种特殊情况需要至少调用一次组合器,有谁知道如何确保这一点?
PS,在maptask.java,我看到了一行:
if (null == combinerClass || numSpills < minSpillsForCombine) {
Merger.writeFile(kvIter, writer, reporter);
} else {
combineCollector.setWriter(writer);
combineAndSpill(kvIter, combineInputCounter);
}
如果我将 minSpillsForCombine 设置为零,我能否确保至少调用一次组合器?
非常感谢!
【问题讨论】: