content: import java.io.IOException;
  
  import java.util.StringTokenizer;
  
   
  
  import org.apache.hadoop.conf.Configuration;
  
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.io.IntWritable;
  import org.apache.hadoop.io.Text;
  
  import org.apache.hadoop.mapreduce.Job;
  
  import org.apache.hadoop.mapreduce.Mapper;
  
  import org.apache.hadoop.mapreduce.Reducer;
  
  import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  
  import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  
  public class LetterCount {
  
    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{
  
      private final static IntWritable one = new IntWritable(1);
  
      private Text word = new Text();
  
      public void map(Object key, Text value, Context context ) throws IOException, InterruptedException {
  
        StringTokenizer itr = new StringTokenizer(value.toString());
  
        while (itr.hasMoreTokens()) {
      	  int i=0;
      	  String Token=itr.nextToken();
      	  while(i<Token.length()) {
      		  	word.set(String.valueOf(Token.charAt(i)));
      		  	context.write(word, one);
      		  	i++;
      	  }
        }
  
      }
  
    }
  
   
    public static class IntSumReducer  extends Reducer<Text,IntWritable,Text,IntWritable> {
  
      private IntWritable result = new IntWritable();
  
      public void reduce(Text key, Iterable<IntWritable> values,Context context ) throws IOException, InterruptedException {
  
        int sum = 0;
  
        for (IntWritable val : values) {
  
          sum += val.get();
  
        }
  
        result.set(sum);
  
        context.write(key, result);
  
      }
  
    }
  
  
    public static void main(String[] args) throws Exception {
  
      Configuration conf = new Configuration();
  
      Job job = Job.getInstance(conf, "letter count");
  
      job.setJarByClass(LetterCount.class);
  
      job.setMapperClass(TokenizerMapper.class);
  
      job.setCombinerClass(IntSumReducer.class);
  
      job.setReducerClass(IntSumReducer.class);
  
      job.setOutputKeyClass(Text.class);
  
      job.setOutputValueClass(IntWritable.class);
  
      FileInputFormat.addInputPath(job, new Path(args[0]));
  
      FileOutputFormat.setOutputPath(job, new Path(args[1]));
  
      System.exit(job.waitForCompletion(true) ? 0 : 1);
  
    }
  
  }
  