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

hadoop流媒体生成未压缩的文件,尽管mapred.output.compress=true,hadoop,hadoop-streaming,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

我运行的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
  • 为什么
    part-00012
    没有压缩
  • 如何将数据集拆分为少量(比如16个)gzip压缩文件
  • 附:另见“

    PPS。这是给你的


    购买力平价。我想我可以做16次hadoop fs-get,
    gzip
    hadoop fs-put
    hadoop fs-rm
    ,但这似乎是一种非常非hadoop的方式。

    mapred.output.compres参数中有一个输入错误。如果你仔细看看你的工作经历,我敢打赌它已经关闭了

    此外,您还可以避免将reduce阶段放在一起,因为这只是处理文件。除非您特别需要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"