嗨,我有一个mr2的工作,它采取了与snappy压缩的avro数据作为输入,处理它,并输出到一个avro格式的输出目录的数据。我们的期望是,这个输出avro数据也应该被快速压缩,但它不是。mr作业是一个仅Map的作业。
我在代码中设置了以下属性 conf.set("mapreduce.map.output.compress", "true"); conf.set("mapreduce.map.output.compress.codec", "org.apache.hadoop.io.compress.SnappyCodec");
但输出仍然没有迅速压缩
3条答案
按热度按时间yftpprvb1#
如果您想使用snappy,只需设置参数
org.apache.hadoop.io.compress.SnappyCodec
这还不够。您应该从google下载snappy并构建它们,然后将构建文件复制到hadoop lib目录。你可以在google上搜索“如何在hadoop上使用snappy”,有一个帖子,但是是用中文写的。链接
anhgbhbe2#
您现在得到的是map阶段中间输出的压缩。相反,您应该使用以下命令(有关详细信息,请参阅本演示文稿,尤其是幻灯片9):
或者您希望的任何替代方案,但不要在这些配置中包含“map”一词,否则将涉及中间输出。
toiithl63#
下面的人成功了
FileOutputFormat.setCompressOutput(job, true); FileOutputFormat.setOutputCompressorClass(job, org.apache.hadoop.io.compress.SnappyCodec.class);
请注意,在设置outputpath之前,必须按照如上所示的相同顺序完成此操作。