MR实战:分科汇总求月考平均分

本文详细介绍了如何使用Hadoop MapReduce处理学生月考成绩数据,计算语文、数学和英语的平均分。通过启动Hadoop服务、准备数据、创建Maven项目、实现Mapper和Reducer,最后启动应用查看结果,展示了MapReduce在大数据处理中的应用和优化。
摘要由CSDN通过智能技术生成

一、实战概述

在当前实战中,我们将深入学习和应用Hadoop MapReduce来处理学生月考成绩数据,主要目标是计算每个同学的语文、数学和英语的平均分。通过实践大数据处理流程,我们将更深刻地理解MapReduce的工作原理,提高大数据分析能力。以下是我们进行的一些优化步骤:

  1. Hadoop服务启动: 首先,我们启动了Hadoop服务,确保分布式计算环境的正常运行。这为后续的MapReduce任务提供了必要的基础。

  2. 数据准备与上传: 在虚拟机上创建了包含语文、数学、英语成绩的文本文件(chinese.txt、math.txt、english.txt),并将这三个文件上传到HDFS的/subjectavg/input目录。这确保了数据可以被MapReduce任务访问。

  3. Maven项目创建: 通过Maven创建了名为SubjectAvg的项目,并添加了必要的依赖(hadoop和junit)。在项目中,我们还配置了日志输出,通过log4j.properties文件进行管理,以提高项目的可维护性。

  4. 实体类Student的优化: 创建了Student类,实现了Writable接口,用于在Mapper和Reducer中传递数据。该类中定义了姓名、语文、数学和英语成绩等属性,以及相应的getter和setter方法,使数据处理更为灵活。

  5. Mapper类SubjectAvgMapper的优化: SubjectAvgMapper继承自Mapper<LongWritable, Text, Text, Student>。在map方法中,我们通过文件切片对象确定了读取的是哪个科目成绩文件,并解析输入行创建Student对象,根据科目设置相应的成绩。这确保了Mapper的高效性和可扩展性。

  6. Reducer类SubjectAvgReducer的优化: SubjectAvgReducer继承自Reducer<Text, Student, Text, Student>。在reduce方法中,通过对学生迭代器的遍历,累加各科成绩并计算平均分,然后更新Student对象。这一步骤的优化关注于算法的效率和准确性。

  7. Driver类SubjectAvgDriver的配置: 在SubjectAvgDriver中,我们设置了作业的相关配置,包括Mapper类、Reducer类、输入路径和输出路径。这确保了MapReduce任务能够在集群上正确执行,得到每个同学各科的平均分。

通过以上优化,我们将更加高效地运用MapReduce框架进行学生成绩数据的处理,深入理解分布式计算的力量,同时提升了代码的可读性和可维护性。这次实战使我们更好地掌握了大数据处理的全流程,从数据准备到任务执行,为进一步的数据分析打下了坚实基础。

二、提出任务

统计每个同学各科月考平均分

  • 语文月考成绩 - chinese.txt
1 张晓云 89
2 张晓云 73
3 张晓云 67
4 张晓云 70
5 张晓云 79
6 张晓云 87
7 张晓云 99
8 张晓云 83
9 张晓云 97
10 张晓云 92
11 张晓云 67
12 张晓云 86
1 王东林 49
2 王东林 83
3 王东林 67
4 王东林 49
5 王东林 93
6 王东林 87
7 王东林 65
8 王东林 92
9 王东林 60
10 王东林 94
11 王东林 81
12 王东林 90
1 李宏宇 77
2 李宏宇 66
3 李宏宇 89
4 李宏宇 87
5 李宏宇 96
6 李宏宇 79
7 李宏宇 87
8 李宏宇 96
9 李宏宇 69
10 李宏宇 87
11 李宏宇 96
12 李宏宇 79
  • 数学月考成绩 - math.txt
1 张晓云 79
2 张晓云 83
3 张晓云 77
4 张晓云 90
5 张晓云 89
6 张晓云 67
7 张晓云 89
8 张晓云 93
9 张晓云 90
10 张晓云 82
11 张晓云 77
12 张晓云 96
1 王东林 78
2 王东林 94
3 王东林 76
4 王东林 70
5 王东林 90
6 王东林 83
7 王东林 85
8 王东林 82
9 王东林 84
10 王东林 78
11 王东林 99
12 王东林 93
1 李宏宇 86
2 李宏宇 81
3 李宏宇 76
4 李宏宇 93
5 李宏宇 88
6 李宏宇 82
7 李宏宇 81
8 李宏宇 93
9 李宏宇 86
10 李宏宇 90
11 李宏宇 67
12 李宏宇 88

  • 英语月考成绩 - english.txt
1 张晓云 78
2 张晓云 83
3 张晓云 92
4 张晓云 66
5 张晓云 82
6 张晓云 89
7 张晓云 79
8 张晓云 68
9 张晓云 96
10 张晓云 91
11 张晓云 87
12 张晓云 82
1 王东林 69
2 王东林 86
3 王东林 73
4 王东林 99
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值