尽管mapred.output.compress = true,hadoop流生成未压缩的文件

时间:2014-05-20 18:56:15

标签: hadoop hadoop-streaming

我像这样运行一个hadoop流媒体工作:

hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-streaming.jar 
       -Dmapred.reduce.tasks=16
       -Dmapred.output.compres=true
       -Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec
       -input foo
       -output bar
       -mapper "python zot.py"
       -reducer /bin/cat

我在输出目录中得到16个文件,其中包含正确的数据,但文件未压缩:

$ hadoop fs -get bar/part-00012
$ file part-00012
part-00012: ASCII text, with very long lines
  1. 为什么part-00012没有压缩?
  2. 如何将我的数据集拆分为少量(例如16个)gzip压缩文件?
  3. PS。另请参阅“Using gzip as a reducer produces corrupt data

    PPS。这是vw

    PPPS。我想我可以做hadoop fs -getgziphadoop fs -puthadoop fs -rm 16次,但这似乎是一种非同寻常的方式。

1 个答案:

答案 0 :(得分:1)

mapred.output.compres参数中存在拼写错误。如果你浏览一下你的工作经历,我会打赌它会被关闭。

此外,你可以避免将减少阶段放在一起,因为那只是抓取文件。除非您特别需要16个零件文件,否则请尝试将其保留为仅地图。

    hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-streaming.jar 
   -Dmapred.reduce.tasks=0
   -Dmapred.output.compress=true
   -Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec
   -input foo
   -output bar
   -mapper "python zot.py"