この単純な問題のように見えるものについて、見つけたすべての例を読んで試しました。圧縮されていないテキスト ファイルのセットがあり、それらに対して処理ステップを実行し、結果を含む圧縮ファイルのセットを出力するとします。簡単にするために、この例ではcat
処理ステップを想定しています。
私が見つけたものはすべて、これがうまくいくはずだと示唆しています:
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
-Dmap.output.compress=true \
-Dmap.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-mapper /bin/cat \
-reducer NONE \
-input /path_to_uncompressed \
-output /path_to_compressed
ジョブは正常に実行されますが、プレーン テキスト ファイルが出力されます。入力ファイル サイズの変更、コーデックの変更 (Snappy、BZip2 など)、リデューサーの追加、mapred.output.compression.type (BLOCK、RECROD) の設定などを試しましたが、結果は常に同じです。参考までに、私は CDH 4.1.2 の新規インストールを使用しています。