1、需求
在统计学生成绩的小项目中,现有一个需求:求出每个班参考学生成绩最高的学生的信息,班级、姓名、平均分
2、分析
利用“班级和平均分”作为key,可以将map阶段读取到的所有学生成绩数据按照班级和成绩排倒叙,发送到reduce在reduce端利用GroupingComparator将班级相同的kv聚合成组,然后取第一个即是最大值
3、实现
第一步:先把分组和排序字段都综合到一个自定义对象里import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.WritableComparable;
public class ClazzScore implements WritableComparable{
private String clazz;
private Double score;
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
public ClazzScore(String clazz, Do