Let's make the necessary modifications to WordCount to correctly use a combiner.
Copy WordCount2.java
to a new file called WordCount3.java
and change the reduce
method as follows:
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int total = 0 ; for (IntWritable val : values)) { total+= val.get() ; } context.write(key, new IntWritable(total)); }
Remember to also change the class name to WordCount3
and then compile, create the JAR file, and run the job as before.
The output is now as expected. Any map-side invocations of the combiner performs successfully and the reducer correctly produces the overall output value.