hadoop - 是 FileOutputFormat.setCompressOutput(job, true);选修的?

标签 hadoop compression

在Hadoop程序中,我尝试对结果进行压缩,我写了如下代码:

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

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

FileOutputFormat.setCompressOutput(job, true); 

再次执行程序,结果还是一样,就是上面的代码

FileOutputFormat.setCompressOutput(job, true);

可选的?该代码的作用是什么?

最佳答案

请参阅FileOutPutFormat.java中的以下方法它在内部调用您已删除的方法调用。

i.e setCompressOutput(conf, true);

这意味着您正在尝试应用 Gzip 编解码器类,然后显然它是指向应压缩输出的代码的指针。不是吗?

/**
   * 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);
  }

关于hadoop - 是 FileOutputFormat.setCompressOutput(job, true);选修的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37474967/

相关文章:

multithreading - 如何使用多线程进行 zlib 压缩

java - 缩小/压缩 url 查询参数值

hadoop - 如何查看hadoop上安装的pig版本

hadoop - MapReduce 作业从不进入运行状态

java - 空指针异常 - Hadoop Mapreduce 作业

c# - 从 C# 中的压缩字符串中解压缩 java 中的字符串

hadoop - Hadoop:slave的ip不正确

hadoop - 用于从 Netezza 到 HDFS 的数据传输的 Sqoop 作业

linux - 压缩时排除选定的子目录

javascript - Closure-Compiler 不足以缩小 JavaScript 以满足 Google PageSpeed 的要求