spo*_*oky 5 java hadoop mapreduce
我是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);
}
Run Code Online (Sandbox Code Playgroud)
并使用 MultipleOutputFormat,这允许为作业写入多个输出文件。文件名可以从输出键和值中得出。