いくつかの記事から、コンバイナーはマッパー側とリデューサー側で実行され、0~N 回実行されることがわかっています。そして、コンバイナーが呼び出されたかどうかにかかわらず、mapreduce プログラムは同じ結果を得る必要があることを知っています。
しかし、コンバイナーが少なくとも1回呼び出される必要がある特別な状況が1つあります。それを確認する方法を知っている人はいますか?
PS、ではmaptask.java
、次の行を見ました:
if (null == combinerClass || numSpills < minSpillsForCombine) {
Merger.writeFile(kvIter, writer, reporter);
} else {
combineCollector.setWriter(writer);
combineAndSpill(kvIter, combineInputCounter);
}
minSpillsForCombineをゼロに設定した場合、コンバイナーが少なくとも 1 回呼び出されるようにすることはできますか?
どうもありがとう!