我正在使用WordCount示例,在Reduce函数中,我需要获取文件名。
public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
int sum = 0;
while (values.hasNext()) {
sum += values.next().get();
}
String filename = ((FileSplit)(.getContext()).getInputSplit()).getPath().getName();
// ----------------------------^ I need to get the context and filename!
key.set(key.toString() + " (" + filename + ")");
output.collect(key, new IntWritable(sum));
}
}
这是目前修改后的代码,我想要获取文件名以便打印输出。我尝试了以下方法:Java Hadoop:如何创建 Mapper 来将输入文件转换为每个文件中的行数? 但我无法获取
context
对象。我是 Hadoop 新手,需要帮助。有谁可以提供帮助吗?