I am using the WordCount example and in the Reduce function, I need to get the file name.
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));
}
}
This is the above modified code currently, where I wanna get the filename to be printed for the word. I tried following Java Hadoop: How can I create mappers that take as input files and give an output which is the number of lines in each file? but I couldn't get the context object.
I am new to hadoop and need this help. Any help guys?