Hadoop编写MapReduce之统计学生平均成绩

本文介绍如何使用Hadoop集群进行学生平均成绩的统计,包括创建和上传数据文件、编写并运行Java程序Score.java、将程序打包为jar并部署到集群中,最终展示统计结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

统计学生的平均成绩

先在集群里创建几个文件
  • 第一个:vim score.txt

[hadoop@master mapreduce]$ cd
[hadoop@master ~]$ ls
hadoop-2.7.7.master.tar.gz hadoop-2.7.7.tar.gz

[hadoop@master ~]$ vim score.txt
linli math 95
linli chinese 90
linli english 100
liming math 78
liming chinese 86
liming english 90
me math 90
me chinese 90
me english 90
  • 第二个:vim score1.txt
[hadoop@master ~]$ vim score1.txt
root math 67
root chinese 89
root english 78
hadoop math 90
hadoop chinese 93
hadoop english 89
文件写好就上传到分布式文件系统

[hadoop@master ~]$ hadoop fs -mkdir /score //同样我会先创建一个存放目录

[hadoop@master ~]$ hadoop fs -lsr / //由于文件有点多,我只复制了相应的文件
lsr: DEPRECATED: Please use ‘ls -R’ instead.
drwxr-xr-x - hadoop supergroup 0 2020-04-19 21:38 /data
-rw-r–r-- 3 hadoop supergroup 51 2020-04-19 21:38 /data/1.txt
-rw-r–r-- 3 hadoop supergroup 53 2020-04-19 21:38 /data/2.txt
drwxr-xr-x - hadoop supergroup 0 2020-04-19 23:45 /out-jar
-rw-r–r-- 3 hadoop supergroup 0 2020-04-19 23:45 /out-jar/_SUCCESS
-rw-r–r-- 3 hadoop supergroup 78 2020-04-19 23:45 /out-jar/part-r-00000
drwxr-xr-x - hadoop supergroup 0 2020-04-19 21:41 /out-word
-rw-r–r-- 3 hadoop supergroup 0 2020-04-19 21:41 /out-word/_SUCCESS
-rw-r–r-- 3 hadoop supergroup 78 2020-04-19 21:41 /out-word/part-r-00000
drwxr-xr-x - hadoop supergroup 0 2020-04-20 00:29 /score

[hadoop@master ~]$ hadoop fs -put score.txt score1.txt /score/
[hadoop@master ~]$ hadoop fs -lsr /
lsr: DEPRECATED: Please use ‘ls -R’ instead.
drwxr-xr-x - hadoop supergroup 0 2020-04-19 21:38 /data
-rw-r–r-- 3 hadoop supergroup 51 2020-04-19 21:38 /data/1.txt
-rw-r–r-- 3 hadoop supergroup 53 2020-04-19 21:38 /data/2.txt
drwxr-xr-x - hadoop supergroup 0 2020-04-19 23:45 /out-jar
-rw-r–r-- 3 hadoop supergroup 0 2020-04-19 23:45 /out-jar/_SUCCESS
-rw-r–r-- 3 hadoop supergroup 78 2020-04-19 23:45 /out-jar/part-r-00000
drwxr-xr-x - hadoop supergroup 0 2020-04-19 21:41 /out-word
-rw-r–r-- 3 hadoop supergroup 0 2020-04-19 21:41 /out-word/_SUCCESS
-rw-r–r-- 3 hadoop supergroup 78 2020-04-19 21:41 /out-word/part-r-00000
drwxr-xr-x - hadoop supergroup 0 2020-04-20 00:30 /score
-rw-r–r-- 3 ha

Hadoop框架下,通常不会直接对两个学生成绩进行实时计算,因为Hadoop主要用于处理大规模数据集的分布式存储和并行计算,更适合离线批处理任务。然而,如果你需要计算所有学生成绩平均分,并假设你有一个包含所有学生成绩的数据集,可以按照以下步骤操作: 1. **数据准备**: 首先,你需要将学生成绩数据存储在一个Hadoop支持的文件系统(如HDFS)上,例如CSV或文本文件,每个学生一行,成绩列作为关键值。 2. **MapReduce任务**: 使用HadoopMapReduce模型,你可以编写Mapper和Reducer阶段来完成这个任务。 - **Mapper**阶段:读取输入文件,对于每一行(即一个学生),解析出成绩,然后发送到键值对(比如"学生ID": 成绩)的形式给Reducer。 - **Combiner**(如果使用):这是一个可选步骤,在Mapper阶段结束时,可以在一定范围内合并中间结果,减少网络传输量,但不是必需的。 - **Reducer**阶段:接收所有Mapper发来的成绩,累加总成绩,并计算平均值。最后,输出格式可能是"学生ID": 平均分数。 3. **聚合结果**: 红ucer结束后,你会得到所有学生及其平均成绩的汇总,需要从集群中收集并进行进一步处理。 4. **查询或可视化**: 最后,你可以查询结果,找出特定学生的平均分,或者通过其他工具对结果进行分析和展示。 注意,这只是一个基本的概念,实际应用可能需要根据你的数据规模、性能需求以及是否允许实时计算等因素调整。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值