内容:
假设一个年级有两个班级,数据分别在class1.csv和class2.csv中,求该年级的数学成绩平均值。数据第一列为学号,第二列为数学成绩。 要求,必须使用Combiner类,且最后输出一行数据,该行仅有一个平均值。
代码实现:
1、Mapper
public class myMapper extends Mapper<LongWritable, Text, NullWritable, FloatWritable> {
FloatWritable v=new FloatWritable();
public void map(LongWritable ikey, Text ivalue, Context context) throws IOException, InterruptedException {
//从输入数据中获取每一个文件中的每一行的值,并且把文本内容转换成String
String line=ivalue.toString();
//对每一行数据进行切分
String[] words=line.split(",");
//业务处理
float score=Float.parseFloat((words[1]));
v.set(score