packageWordSum_02;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.NullWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Mapper;importjava.io.IOException;publicclassMyMapextendsMapper<LongWritable,Text,NullWritable,LongWritable>{@Overrideprotectedvoidmap(LongWritable key,Text value,Context context)throwsIOException,InterruptedException{//1 get values stringString valueString = value.toString();//2 split stringString wArr[]= valueString.split(" ");//3 map out key/value
context.write(NullWritable.get(),newLongWritable(wArr.length));}}
Reduce类
packageWordSum_02;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.NullWritable;importorg.apache.hadoop.mapreduce.Reducer;importjava.io.IOException;importjava.util.Iterator;publicclassMyReduceextendsReducer<NullWritable,LongWritable,NullWritable,LongWritable>{@Overrideprotectedvoidreduce(NullWritable key,Iterable<LongWritable> valueIn,Context context)throwsIOException,InterruptedException{Iterator<LongWritable> it = valueIn.iterator();//define sumlong sum =0;//iterator count arrwhile(it.hasNext()){
sum += it.next().get();}
context.write(NullWritable.get(),newLongWritable(sum));}}
Job类
packageWordSum_02;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Job;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;importjava.io.IOException;publicclassTestJob{publicstaticvoidmain(String[] args)throwsIOException,ClassNotFoundException,InterruptedException{Configuration conf =newConfiguration();//1 get a jobJob job =Job.getInstance(conf);//2 set jar main class
job.setJarByClass(TestJob.class);//3 set map class and reducer class
job.setMapperClass(MyMap.class);
job.setReducerClass(MyReduce.class);//4 set map reduce output type
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);//5 set key/value output file format and input/output pathFileInputFormat.setInputPaths(job,newPath("file:///simple/wordsum.txt"));FileOutputFormat.setOutputPath(job,newPath("file:///simple/result"));//6 commit job
job.waitForCompletion(true);}}