出力ファイルをキーで分割したいHadoopのユースケースがあります。現時点では、レデューサーはイテレーターに各値を出力するだけです。たとえば、Pythonストリーミングコードは次のとおりです。
for line in sys.stdin:
data = line.split("\t")
print data[1]
この方法は、小さなデータセット(約4GB)で機能します。ジョブの各出力ファイルには、1つのキーの値のみが含まれています。
ただし、データセットのサイズを大きくすると(40GB以上)、各ファイルには、並べ替えられた順序でキーが混在しています。
これを解決する簡単な方法はありますか?出力がソートされた順序になり、順次スキャンを実行してファイルに追加できることはわかっています。ただし、Hadoopがキーを並べ替えて分割するため、これは必要ないようです。
質問は明確ではないかもしれませんので、誰かコメントがあれば明確にします。ありがとう