参考:
对于mapreduce程序的编写思路,例程代码理解,解题思路灵感,主要参考博客:
https://blog.csdn.net/zhongqi2513/article/details/78321664
01、10~14案例。
环境配置主要参考博客:
https://blog.csdn.net/weixin_42001089/article/details/81865101
环境:
操作系统:Ubuntu18.04
java:1.8.0_251
hadoop: 3.2.1
1. 计算每个学生必修课的平均成绩
解题思路:
首先,过滤掉非必修课程的成绩,然后对分数做求平均值的聚合操作。
对于mapper阶段,输出的key-value分别是:
key: 学生名 name
value: 分数 score
对于reducer阶段,reduce方法接收的参数是:
key: 学生名 name
values:某一学生对应的所有必修课分数score的一个迭代器
Map部分:
Reduce部分:
输入数据:
结果:
2. 按科目统计每个班的平均成绩
解题思路:首先,把科目和班级拼接起来的字符串作为key,然后对分数做求平均值的聚合操作。
对于mapper阶段,输出的key-value分别是:
key:科目和班级拼接起来的字符串 科目+班级
value: 分数 score
对于reducer阶段,reduce方法接收的参数是:
key:科目和班级拼接起来的字符串 科目+班级
values:某一科目对应某班同学分数score的一个迭代器
Map部分:
Reduce部分:
输入数据:
结果: