我们看到地图可以接受并输出压缩和未压缩的数据。我正在进行cloudera培训,老师提到减少任务输入必须是关键值,因此无法处理压缩数据。
是吗?如果这是正确的,我如何处理从shuffler / partitioner传输错误数据以减少任务时的网络延迟。
感谢您的帮助。
答案 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);