マッパーで収集された少数のメタデータをレデューサーに渡すにはどうすればよいですか?私の特定の問題では、2つの長い値のみを渡したいので、これらにMultipleOutputFormatまたはMultipleOutputsを使用しません。
私が試したいくつかの亜種:
(1)
マッパー
context.getCounter("Countergroup", "Counter").increment(1);
レデューサー
counter = context.getCounter("Countergroup", "Counter").getValue();
カウンターは定期的に更新されないため、Reducerの関数呼び出しの結果は0になります。
(2)
マッパー
context.getConfiguration().setInt("Counter", countTotal);
レデューサー
counter = context.getConfiguration().getInt("Counter", 0);
確かに、実行中のジョブ中に構成を変更することはできません(試す価値がありました)。
この問題についてはすでに質問がありますが、実用的な答えは見つかりませんでした。また、APIが変更されました。Hadoop0.20.2を使用しています。
同様の質問:
レデューサーからマッパーのカウンターにアクセスする (これは有望に見えますが、0.20.2 APIでは機能しないようです)