一、问题描述
学校的学生的是一个非常大的生成数据的集体,比如每次考试的成绩,现有一个班级的学生一个月的考试成绩数据。
科目 姓名 分数
求出每门成绩中属于甲级的学生人数和总人数,乙级的学生人数和总人数,丙级的学生人数和总人数。
甲级(90及以上)
乙级(80到89)
丙级(0到79)
处理数据结果:课程\t甲级\t学生1,学生2,…\t总人数
二、思路介绍
map阶段将课程名和等级拼接为key,学生名作为value输出。
reduce阶段进行计数并输出。
三、代码实现
1、Map阶段
package com.studentscore;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
public class ScoreCategoryMap extends Mapper<LongWritable, Text, Text, Text> {
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//获取行
String line = value.toString();