可以减少任务接受hadoop中的压缩数据

时间:2013-08-29 20:03:08

标签: hadoop mapreduce hadoop-partitioning

我们看到地图可以接受并输出压缩和未压缩的数据。我正在进行cloudera培训,老师提到减少任务输入必须是关键值,因此无法处理压缩数据。

是吗?如果这是正确的,我如何处理从shuffler / partitioner传输错误数据以减少任务时的网络延迟。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果Mapper可以输出压缩数据,当然Reducer可以接受压缩数据。这对它们都是透明的,因此输出会自动压缩和解压缩。

我认为他/她一定是在说Hadoop必须为你解压缩这个压缩输入,因为Reducer不期望压缩数据必须解压缩。

Reducer s也可以输出压缩数据,并且单独控制。您可以控制编解码器。您还可以自动读取压缩数据作为Mapper的输入。

虽然有一些问题:例如,gzip压缩文件无法被Mapper拆分,这对并行性有害。但是在某些情况下可以拆分bzip压缩文件。

答案 1 :(得分:0)

是的,它可以。 只需在驱动程序类的main方法中添加:

  Configuration conf = new Configuration();
  conf.setBoolean("mapred.compress.map.output", true);
  conf.setClass("mapred.map.output.compression.codec", SnappyCodec.class, CompressionCodec.class);