gpt4 book ai didi

hadoop - Hadoop中的分布式文件处理?

转载 作者:可可西里 更新时间:2023-11-01 14:26:39 25 4
gpt4 key购买 nike

我有大量压缩的 tar 文件,其中每个 tar 本身包含几个文件。我想提取这些文件,我想使用 hadoop 或类似的技术来加速处理。有没有解决此类问题的工具?据我所知,hadoop 和类似的框架(如 spark 或 flink)不直接使用文件,也不会让您直接访问文件系统。我还想对提取的文件进行一些基本的重命名,并将它们移动到适当的目录中。

我可以想象一个创建所有 tar 文件列表的解决方案。然后将该列表传递给映射器,并且单个映射器从列表中提取一个文件。这是一种合理的方法吗?

最佳答案

可以指示 MapReduce 使用输入格式,其中每个 Mapper 的输入是单个文件。 (来自https://code.google.com/p/hadoop-course/source/browse/HadoopSamples/src/main/java/mr/wholeFile/WholeFileInputFormat.java?r=3)

public class WholeFileInputFormat extends FileInputFormat<NullWritable, BytesWritable> {

@Override
protected boolean isSplitable(JobContext context, Path filename) {
return false;
}

@Override
public RecordReader<NullWritable, BytesWritable> createRecordReader(
InputSplit inputSplit, TaskAttemptContext context) throws IOException,
InterruptedException {
WholeFileRecordReader reader = new WholeFileRecordReader();
reader.initialize(inputSplit, context);
return reader;
}
}

然后,在您的映射器中,您可以使用 Apache commons 压缩库来解压缩 tar 文件 https://commons.apache.org/proper/commons-compress/examples.html

您不需要将文件列表传递给 Hadoop,只需将所有文件放在一个 HDFS 目录中,然后使用该目录作为您的输入路径。

关于hadoop - Hadoop中的分布式文件处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827040/

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