values,Context contest) throws IOException, InterruptedException
long count = 0;
//遍历valueslist,进行累加求和
for(LongWritable value:values)
count +=value.get();
//输出一个文件的统计结果
contest.write(key,new LongWritable(count));
WCRunner.java
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WCRunner
//用来描述一个特定的job,比如改作业指定那个类是逻辑处理中的map,那个类是逻辑处理中发的reduce
//还可以指定改作业要处理的数据的所在的路径
//还可以指定作业完成后输出结果放到的哪个路径中
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException
Configuration conf = new Configuration();
Job job = Job.getInstance(conf);
//设置整个job所要用到的jar包的类所在的位置
job.setJarByClass(WCRunner.class);
//本job所使用的mapper和reduce
job.setMapperClass(WCMapper.class);
job.setReducerClass(WCReducer.class);
//指定reduce的kv类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
//指定map的kv类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
//指定元数据指定在哪里
//这里的文件路径既可以windows中的文件路径,也可以是hdfs中的路径,前提是可以互相通讯
FileInputFormat.setInputPaths(job,new Path("/home/hadoop/data-shixun/wordcount/srcdata.txt"));
FileOutputFormat.setOutputPath(job, new Path("/home/hadoop/data-shixun/wordcount/output"));
//将job提交给集群
job.waitForCompletion(true);
代码中相应部分都有详细的注释。以上是关于mapreduce入门程序之---wordcount的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop从入门到精通33:MapReduce核心原理之Shuffle过程分析
大数据Hadoop之MapReduce
MapReduce编程入门及HDFS-JAVA接口
大数据MapReduce入门之倒排索引
Hadoop MapReduce编程 API入门系列之挖掘气象数据版本2
Hadoop MapReduce编程 API入门系列之二次排序