gpt4 book ai didi

hadoop - 如何在 gzip 文件上使用 CombineFileInputFormat?

转载 作者:可可西里 更新时间:2023-11-01 15:12:50 32 4
gpt4 key购买 nike

在 gzip 文件上使用 CombineFileInputFormat 的最佳方法是什么?

最佳答案

This本文将帮助您在 CombineFIleInputFOrmat 的帮助下构建自己的 Inputformat 以读取和处理 gzip 文件。以下部分会让您了解需要做什么。

自定义输入格式:

构建您自己的自定义 combinefileinputformat 几乎与 combinefileinputformat 相同。键必须是我们自己的可写类,它将保存文件名、偏移量和值将是实际的文件内容。必须将 issplittable 设置为 false(我们不想拆分文件)。将 maxsplitsize 设置为您要求的值。基于该值 Combinefilerecordreader 决定拆分的数量并为每个拆分创建一个实例。您必须通过向其中添加解压缩逻辑来构建自己的自定义记录阅读器。

自定义记录阅读器:

Custom Recordreader 使用linereader 并将键设置为文件名,偏移量和值设置为实际文件内容。如果文件被压缩,它会解压缩并读取它。这是它的摘录。

private void codecWiseDecompress(Configuration conf) throws IOException{

CompressionCodecFactory factory = new CompressionCodecFactory(conf);
CompressionCodec codec = factory.getCodec(path);

if (codec == null) {
System.err.println("No Codec Found For " + path);
System.exit(1);
}

String outputUri =
CompressionCodecFactory.removeSuffix(path.toString(),
codec.getDefaultExtension());
dPath = new Path(outputUri);

InputStream in = null;
OutputStream out = null;
fs = this.path.getFileSystem(conf);

try {
in = codec.createInputStream(fs.open(path));
out = fs.create(dPath);
IOUtils.copyBytes(in, out, conf);
} finally {
IOUtils.closeStream(in);
IOUtils.closeStream(out);
rlength = fs.getFileStatus(dPath).getLen();
}
}

自定义可写类:

一对文件名,偏移值

关于hadoop - 如何在 gzip 文件上使用 CombineFileInputFormat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32729544/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com