【发布时间】:2015-12-11 09:17:22
【问题描述】:
我有一个使用多输出格式并输出 500 个文件的 MR 作业。我想压缩这些文件而不合并它们。
【问题讨论】:
标签: hadoop mapreduce zip multipleoutputs
我有一个使用多输出格式并输出 500 个文件的 MR 作业。我想压缩这些文件而不合并它们。
【问题讨论】:
标签: hadoop mapreduce zip multipleoutputs
您必须使用 SequenceFileOutputFormat :一种以二进制(原始)格式将键、值写入 SequenceFile 的 OutputFormat
您可以在 SequenceFile.CompressionType 中使用三种变体
BLOCK :将记录序列压缩成块。
NONE:不压缩记录。
RECORD:仅压缩值,分别单独压缩。
代码中的关键更改。
Path outDir = new Path(WORK_DIR_PREFIX + "/out/" + jobName);
job.setOutputFormatClass(SequenceFileOutputFormat.class);
SequenceFileOutputFormat.setOutputPath(job, outDir);
SequenceFileOutputFormat.setOutputCompressionType(job, CompressionType.BLOCK);
看看工作 example 对 SequenceFileOutputFormat 的使用。
【讨论】: