一、实战概述
- 我们将演示如何使用Apache Hadoop的MapReduce框架计算学生总分和平均分。针对包含姓名和六门科目成绩的五条记录数据,我们将在Hadoop上进行以下步骤:
- 启动服务,准备数据(创建score.txt文件并上传到HDFS的/calcscore/input目录);实现MapReduce过程,包括创建Maven项目、添加依赖、配置日志、编写ScoreMapper和ScoreReducer类,以及设置作业的ScoreDriver类。
- 在ScoreMapper中,我们将每行数据拆分为姓名和科目成绩的键值对。ScoreDriver负责作业配置和调用Mapper和Reducer。ScoreReducer计算每个学生的总分和平均分,并输出结果。最后,运行ScoreDriver并查看HDFS上的结果文件。此过程展示了MapReduce在处理和分析学生成绩数据中的应用。
二、提出任务
- 成绩表,包含六个字段(姓名、语文、数学、英语、物理、化学)的成绩表,共有五条记录。
姓名 | 语文 | 数学 | 英语 | 物理 | 化学 |
---|---|---|---|---|---|
李小双 | 89 | 78 | 94 | 96 | 87 |
王丽霞 | 80 | 94 | 86 | 78 | 80 |
吴雨涵 | 67 | 90 | 95 | 92 | 60 |
张晓红 | 76 | 87 | 90 | 79 | 59 |
陈燕文 | 95 | 97 | 92 | 88 | 86 |
三、完成任务
(一)准备数据
- 启动hadoop服务
1、在虚拟机上创建文本文件
在master
主机上创建calcscore
目录,在里面创建score.txt
文件
李小双 89 78 94 96 87
王丽霞 80 94 86 78 80
吴雨涵 67 90 95 92 60
张晓红 76 87 90 79 59
陈燕文 95 97 92 88 86
2、上传文件到HDFS指定目录
- 创建
/calcscore/input
目录,执行命令:hdfs dfs -mkdir -p /calcscore/input
- 将文本文件
score.txt
,上传到HDFS的/calcscore/input
目录
(二)实现步骤
1、创建Maven项目
-
Maven项目 -
CalcScore
-
注意!!!
JDK版本要与服务器上的JDK版本一致 -
单击【Create】按钮
2、添加相关依赖
- 在pom.xml文件里添加hadoop和junit依赖
<dependencies>
<!--hadoop客户端-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.4</version>
</dependency>
<!--单元测试框架-->
<dependency>
<groupId>junit</groupId>
<artifactId