gpt4 book ai didi

hadoop - MapReduce 如何读取多个输入文件?

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

我正在开发一个代码来读取数据并使用 mapreduce 将其写入 HDFS。但是,当我有多个文件时,我不明白它是如何处理的。映射器的输入路径是目录的名称,如

的输出所示
String filename = conf1.get("map.input.file");

那么它是如何处理目录中的文件的呢?

最佳答案

为了获取输入文件路径,您可以使用 context 对象,如下所示:

FileSplit fileSplit = (FileSplit) context.getInputSplit();
String inputFilePath = fileSplit.getPath().toString();

以及如何处理多个文件:

映射器函数的多个实例在集群中的不同机器上创建。每个实例接收不同的输入文件。如果文件大于默认的 dfs block 大小 (128 MB),则文件将进一步拆分为更小的部分,然后分发给映射器。

因此您可以通过以下两种方式配置每个映射器接收的输入大小:

  • 更改 HDFS block 大小(例如 dfs.block.size=1048576)
  • 设置参数 mapred.min.split.size(这只能设置为大于 HDFS block 大小)

注意:这些参数仅在您的输入格式支持拆分输入文件时才有效。常见的压缩编解码器(如 gzip)不支持拆分文件,因此这些将被忽略。

关于hadoop - MapReduce 如何读取多个输入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14067129/

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