==map phase==
input: key = LongWritable value = Text,
output: key = Text, value = Longwritable
==combiner==
input: key = Text, value = iterator<LongWritable>
output: key = Text, value = Text
The combiner is a pure optimization and *cannot* change the output
types of the map i.e. the combiner output _must_ be <Text,
LongWritable>.
==reduce phase==
input: key = Text, value = iterator<Text>
output: key = Text, value = LongWritable
You have a mismatch here too - the map-output types *must* be <Text,
Text> if your application needs the above. Your application is
assuming that the Combiner will change the types - this is an invalid
assumption.
The way around this is to get your map-output types to be <Text, Text>.
Arun