Java で記述した Hadoop MapReduce ジョブで、REDUCE のフェーズで分割の不安定性を発見しました。特定の 1 / X with X double:
double sum = 0;
while (values.hasNext())
{
sum += values.next().get();
}
if (sum != 0) {
output.collect(key, new DoubleWritable(1/sum));
} else {
output.collect(key, new DoubleWritable(1));
}
値は反復子です。
sum が ZERO と異なる場合は、1/sum を書き込み、SOMETIMES WRITE sum を書き込むことがあります。それは私を夢中にさせます。どうもありがとう
[解決済み] MAPPER と REDUCER のインターフェイス (キーと値) が異なるという別の問題がありました。(Text, InteWritable) 1 つ目 (Text, DoubleWritable) 2 つ目。これを「メイン」で構成しました。次の行を入力するのが間違っていたため、エラーが続きました。
conf.setCombinerClass(Reduce.class);
マッパーとリデューサーで同じインターフェイス (k, v) が必要ですが、これは私の場合ではありません。すべての作品を削除しました。Arnon Rotem-Gal-Oz のおかげで、私は彼を支持する評判がありません