0

出力ファイルをキーで分割したいHadoopのユースケースがあります。現時点では、レデューサーはイテレーターに各値を出力するだけです。たとえば、Pythonストリーミングコードは次のとおりです。

for line in sys.stdin:
    data = line.split("\t")
    print data[1]

この方法は、小さなデータセット(約4GB)で機能します。ジョブの各出力ファイルには、1つのキーの値のみが含まれています。

ただし、データセットのサイズを大きくすると(40GB以上)、各ファイルには、並べ替えられた順序でキーが混在しています。

これを解決する簡単な方法はありますか?出力がソートされた順序になり、順次スキャンを実行してファイルに追加できることはわかっています。ただし、Hadoopがキーを並べ替えて分割するため、これは必要ないようです。

質問は明確ではないかもしれませんので、誰かコメントがあれば明確にします。ありがとう

4

1 に答える 1

1

次に、MapReduceソリューションのカスタムjar実装を作成し、ここでMultipleTextOutputFormat説明するように使用されるOutputFormatになります。レデューサーのキーとしてファイル名(この場合はキー)を出力し、値としてペイロード全体を出力するだけで、データはキーという名前のファイルに書き込まれます。

于 2013-02-20T18:00:37.683 に答える