当我们有每一位同学的每一科成绩时,我们计算他们的平均成绩,用传统的方法比较麻烦,如果我们用hadoop中MapReduce组件的话就比较简单了。
测试数据如下:
从上面的数据可以看到,计算每一位同学的平均成绩,在map阶段,我们可以用同学的姓名作为key,成绩作为value;在reduce阶段,key值相同的value值相加计算出总成绩,并且计算出科目的数量,然后用总成绩来除以科目数量就可以得出每一位同学的平均成绩了。
代码如下:
import java.io.IOException;
import java.util.Iterator;
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 Socre {
public sta