0

マッパーが複数のキーを生成する map-reduce プログラムがあります。map-reduce フレームワークによれば、同じキーを持つすべてのペアが同じレデューサーに転送されます。10 個のキー (合計) と 3 個のレデューサーがあるとします。レデューサーが最後に出力するのは、3 つの出力ファイルです。キーごとに個別の出力ファイルを生成し、最後に 10 個の出力ファイルを出力する手法はありますか? 10 個のレデューサーを使用することは可能ですが、キーの数が増えると、この解決策が不可能になる場合があります。

4

2 に答える 2

0

それはあまり良い考えとは思えません。実際に Hadoop を使い始めると、深刻な問題に直面することになります。

それでも必要な場合は、Reduce フェーズをスキップしてください。マッパーから直接出力を出力し、続いてコンバイナーを出力するだけです。

于 2013-09-25T18:24:46.017 に答える
0

古いmapredAPI を使用しても問題ない場合は、これを行う別の方法があります。

オーバーライドされた拡張子をMultipleTextOutputFormat使用して、レコードのすべての内容を「値」の一部にし、ファイル名またはパスをキーにすることができます。

すでにoddjobライブラリで提供されている実装があります: MultipleLeafValueOutputFormat、あなた自身も実装することができます.

詳しくはこちらをご覧ください。私の同様の回答も読んでください here

于 2013-09-25T18:49:31.350 に答える