我们看到map可以接受和输出压缩和未压缩的数据。我正在接受cloudera培训,老师提到reduce任务输入必须是o键值形式,因此不能处理压缩数据。是这样吗?如果是这样的话,那么在从shuffler/partitioner传输bug数据以减少任务时,如何处理网络延迟呢。谢谢你的帮助。
mlmc2os51#
是的,它可以。只需在驱动程序类的主方法中添加以下内容:
Configuration conf = new Configuration(); conf.setBoolean("mapred.compress.map.output", true); conf.setClass("mapred.map.output.compression.codec", SnappyCodec.class, CompressionCodec.class);
vojdkbi02#
如果 Mapper 可以输出压缩数据,当然 Reducer 可以接受压缩数据。这对两者都是透明的,因此输出会自动压缩和解压缩。我想他/她一定是说hadoop必须为您解压压缩输入,因为 Reducer 不希望压缩数据必须自行解压缩。 Reducer s还可以输出压缩数据,这是单独控制的。你可以控制编解码器。您还可以将压缩数据作为输入读取到 Mapper 自动地。但也有一些陷阱:例如, gzip 压缩文件不能由 Mapper ,这不利于并行性。但是 bzip 压缩文件在某些情况下可以拆分。
Mapper
Reducer
gzip
bzip
2条答案
按热度按时间mlmc2os51#
是的,它可以。只需在驱动程序类的主方法中添加以下内容:
vojdkbi02#
如果
Mapper
可以输出压缩数据,当然Reducer
可以接受压缩数据。这对两者都是透明的,因此输出会自动压缩和解压缩。我想他/她一定是说hadoop必须为您解压压缩输入,因为
Reducer
不希望压缩数据必须自行解压缩。Reducer
s还可以输出压缩数据,这是单独控制的。你可以控制编解码器。您还可以将压缩数据作为输入读取到Mapper
自动地。但也有一些陷阱:例如,
gzip
压缩文件不能由Mapper
,这不利于并行性。但是bzip
压缩文件在某些情况下可以拆分。