@Override
 public void map(
     Object key, Text value, OutputCollector<IntWritable, Text> output, Reporter reporter)
     throws IOException {
   parser.parse(value);
   output.collect(new IntWritable(parser.getDepartmentId()), value);
 }
 @Override
 public void map(
     Object key, Text value, OutputCollector<IntPair, Text> output, Reporter reporter)
     throws IOException {
   parser.parse(value);
   IntPair intPair = new IntPair();
   intPair.set(parser.getDepartmentId(), parser.getEmployeeAge());
   output.collect(intPair, value);
 }
 @Override
 public void reduce(
     IntPair key,
     Iterator<Text> values,
     OutputCollector<IntWritable, Text> output,
     Reporter reporter)
     throws IOException {
   while (values.hasNext()) {
     Text value = values.next();
     parser.parse(value);
     output.collect(new IntWritable(parser.getDepartmentId()), value);
   }
 }