hadoop是fileoutputformat.setcompressoutput(job,true);可选?

jm2pwxwz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(315)

在hadoop程序中,我尝试压缩结果,我编写了以下代码:

FileOutputFormat.setCompressOutput(job, true); 
FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class);

结果被压缩了,当我删除第一行时:

FileOutputFormat.setCompressOutput(job, true);

再执行一次程序,结果是一样的,就是上面的代码
fileoutputformat.setcompressoutput(job,true);
可选?那代码的作用是什么?

o7jaxewo

o7jaxewo1#

请参阅fileoutputformat.java中的以下方法,它在内部调用已删除的方法调用。
i、 e setcompressoutput(conf,true);
这意味着您正在尝试应用gzip codec类,然后很明显它是一个指向应该压缩输出的代码的指针。不是吗?

/**
   * Set whether the output of the job is compressed.
   * @param conf the {@link JobConf} to modify
   * @param compress should the output of the job be compressed?
   */
  public static void setCompressOutput(JobConf conf, boolean compress) {
    conf.setBoolean("mapred.output.compress", compress);
  }
  /**
   * Set the {@link CompressionCodec} to be used to compress job outputs.
   * @param conf the {@link JobConf} to modify
   * @param codecClass the {@link CompressionCodec} to be used to
   *                   compress the job outputs
   */
  public static void 
  setOutputCompressorClass(JobConf conf, 
                           Class<? extends CompressionCodec> codecClass) {
    setCompressOutput(conf, true);
    conf.setClass("mapred.output.compression.codec", codecClass, 
                  CompressionCodec.class);
  }

相关问题