マッパーが複数のキーを生成する map-reduce プログラムがあります。map-reduce フレームワークによれば、同じキーを持つすべてのペアが同じレデューサーに転送されます。10 個のキー (合計) と 3 個のレデューサーがあるとします。レデューサーが最後に出力するのは、3 つの出力ファイルです。キーごとに個別の出力ファイルを生成し、最後に 10 個の出力ファイルを出力する手法はありますか? 10 個のレデューサーを使用することは可能ですが、キーの数が増えると、この解決策が不可能になる場合があります。
1069 次
2 に答える
0
それはあまり良い考えとは思えません。実際に Hadoop を使い始めると、深刻な問題に直面することになります。
それでも必要な場合は、Reduce フェーズをスキップしてください。マッパーから直接出力を出力し、続いてコンバイナーを出力するだけです。
于 2013-09-25T18:24:46.017 に答える
0
古いmapred
API を使用しても問題ない場合は、これを行う別の方法があります。
オーバーライドされた拡張子をMultipleTextOutputFormat
使用して、レコードのすべての内容を「値」の一部にし、ファイル名またはパスをキーにすることができます。
すでにoddjobライブラリで提供されている実装があります: MultipleLeafValueOutputFormat
、あなた自身も実装することができます.
詳しくはこちらをご覧ください。私の同様の回答も読んでください here。
于 2013-09-25T18:49:31.350 に答える