0

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

那正确吗?如果那是正确的,当从洗牌器/分区器传输错误数据以减少任务时,我如何处理网络延迟。

谢谢你的帮助。

4

2 回答 2

0

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

我认为他/她一定是在说 Hadoop 必须为您解压缩该压缩输入,因为Reducer它不期望它必须自行解压缩的压缩数据。

Reducers 也可以输出压缩数据,这是单独控制的。您可以控制编解码器。您还可以Mapper自动读取压缩数据作为 a 的输入。

但是有一些问题:例如,gzip压缩文件不能被 a 分割Mapper,这对并行性不利。但是bzip在某些情况下可以拆分压缩文件。

于 2013-08-29T20:39:53.417 回答
0

是的,它可以。只需将其添加到您的驱动程序类的主要方法中:

  Configuration conf = new Configuration();
  conf.setBoolean("mapred.compress.map.output", true);
  conf.setClass("mapred.map.output.compression.codec", SnappyCodec.class, CompressionCodec.class);
于 2013-08-30T04:15:06.293 回答