gpt4 book ai didi

java - Hadoop MapReduce - 每个输入一个输出文件

转载 作者:可可西里 更新时间:2023-11-01 14:20:06 24 4
gpt4 key购买 nike

我是 Hadoop 的新手,我想弄清楚它是如何工作的。至于练习,我应该实现类似于 WordCount-Example 的东西。任务是读取多个文件,进行 WordCount 并为每个输入文件编写一个输出文件。Hadoop 使用组合器并将 map-part 的输出打乱作为 reducer 的输入,然后写入一个输出文件(我猜是针对每个正在运行的实例)。我想知道是否可以为每个输入文件写一个输出文件(所以保留 inputfile1 的字词并将结果写入 outputfile1 等等)。是否可以覆盖 Combiner-Class 或是否有其他解决方案(我不确定这是否应该在 Hadoop-Task 中解决,但这是练习)。

谢谢...

最佳答案

map.input.file 环境参数具有映射器正在处理的文件名。在映射器中获取此值并将其用作映射器的输出键,然后将单个文件中的所有 k/v 转到一个缩减器。

映射器中的代码。顺便说一句,我使用的是旧的 MR API

@Override
public void configure(JobConf conf) {
this.conf = conf;
}

@Override.
public void map(................) throws IOException {

String filename = conf.get("map.input.file");
output.collect(new Text(filename), value);
}

并使用 MultipleOutputFormat,这允许为作业写入多个输出文件。文件名可以从输出键和值派生。

关于java - Hadoop MapReduce - 每个输入一个输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886285/

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