Your IP : 216.73.216.40


Current Path : /var/www/html/bibhas.ghoshal/IoT_2021/Slides/
Upload File :
Current File : /var/www/html/bibhas.ghoshal/IoT_2021/Slides/WordCount.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package wordcount;

import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;

/**
 *
 * @author systemlab
 */
public class WordCount {
    
        
 public static class MyMap extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable>
    {
         private final static IntWritable one = new IntWritable(1);
         private Text mykey = new Text();

        public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter)
                throws IOException
            {
                  String line = value.toString();
                  StringTokenizer tokenizer = new StringTokenizer(line);
                  while (tokenizer.hasMoreTokens())
                    {
                        mykey.set(tokenizer.nextToken());
                        output.collect(mykey, one);
                    }
            }   
   } 
   

public static class MyReduce 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();
                        }
                            output.collect(key, new IntWritable(sum));
                 }
    }
    

    public static void main(String[] args) throws Exception
        {
            JobConf conf = new JobConf(WordCount.class);
            conf.setJobName("wordcount");

            conf.setMapperClass(MyMap.class);
            conf.setCombinerClass(MyReduce.class);
            conf.setReducerClass(MyReduce.class);

            conf.setOutputKeyClass(Text.class);
            conf.setOutputValueClass(IntWritable.class);
            
            conf.setInputFormat(TextInputFormat.class);
            conf.setOutputFormat(TextOutputFormat.class);

            FileInputFormat.setInputPaths(conf, new Path(args[0]));
            FileOutputFormat.setOutputPath(conf, new Path(args[1]));

            JobClient.runJob(conf);

        }
    
    
    
    
}