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

uurity8g  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(371)

我们看到map可以接受和输出压缩和未压缩的数据。我正在接受cloudera培训,老师提到reduce任务输入必须是o键值形式,因此不能处理压缩数据。
是这样吗?如果是这样的话,那么在从shuffler/partitioner传输bug数据以减少任务时,如何处理网络延迟呢。
谢谢你的帮助。

mlmc2os5

mlmc2os51#

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

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

vojdkbi02#

如果 Mapper 可以输出压缩数据,当然 Reducer 可以接受压缩数据。这对两者都是透明的,因此输出会自动压缩和解压缩。
我想他/她一定是说hadoop必须为您解压压缩输入,因为 Reducer 不希望压缩数据必须自行解压缩。 Reducer s还可以输出压缩数据,这是单独控制的。你可以控制编解码器。您还可以将压缩数据作为输入读取到 Mapper 自动地。
但也有一些陷阱:例如, gzip 压缩文件不能由 Mapper ,这不利于并行性。但是 bzip 压缩文件在某些情况下可以拆分。

相关问题