计算某小学学生的期末考试成绩的平均分

文章目录

  • 一、准备数据
    • 1.学生的三科成绩
  • 二、编写程序
    • 1.完整代码
    • 2.启动Hadoop
    • 3.上传3个txt文件
    • 4.在eclipse中运行
    • 5.查看最终结果
  • 结束

一、准备数据

1.学生的三科成绩

语文成绩:chinese.txt如下:

Stout 91
Wyatt 91
Becker 88
Huber 77
Cok 79
Rocha 64
Cohen 87
Peterson 78
Brooks 96
Clayton 74
Adams 62
Hendricks 77
Dyer 94
Savage 77
Callahan 91
Dalton 90
Hickman 84
Dunn 85
Pierce 54
Dorsey 52
Daniel 76
Martin 98
Larsen 88
White 76
Emerson 86
Fox 50
Ashley 93
Wilder 85
Clay 67
Garrett 57
Hicks 55
Holcomb 74
Welch 89
Ferguson 93
Richard 57
Boyd 72
Johnson 61
Mccarty 61
Monroe 96
Contreras 92
Buckner 62
Wright 90
Walton 85
Houston 59
Powell 76
George 91
Dyer 53
Holt 69
Tran 57

数学成绩:math.txt如下:

Stout 51
Wyatt 95
Becker 68
Huber 70
Cok 78
Rocha 99
Cohen 91
Peterson 98
Brooks 81
Clayton 97
Adams 87
Hendricks 83
Dyer 97
Savage 89
Callahan 73
Dalton 95
Hickman 55
Dunn 78
Pierce 79
Dorsey 90
Daniel 60
Martin 65
Larsen 58
White 75
Emerson 77
Fox 55
Ashley 53
Wilder 87
Clay 82
Garrett 59
Hicks 99
Holcomb 56
Welch 64
Ferguson 54
Richard 74
Boyd 82
Johnson 72
Mccarty 99
Monroe 61
Contreras 64
Buckner 53
Wright 99
Walton 99
Houston 57
Powell 96
George 74
Dyer 100
Holt 54
Tran 93

英语成绩:english.txt如下:

Stout 63
Wyatt 85
Becker 89
Huber 56
Cok 86
Rocha 58
Cohen 63
Peterson 53
Brooks 64
Clayton 93
Adams 80
Hendricks 58
Dyer 75
Savage 98
Callahan 82
Dalton 81
Hickman 87
Dunn 98
Pierce 51
Dorsey 64
Daniel 78
Martin 57
Larsen 84
White 73
Emerson 80
Fox 86
Ashley 73
Wilder 54
Clay 100
Garrett 54
Hicks 60
Holcomb 67
Welch 58
Ferguson 82
Richard 70
Boyd 75
Johnson 93
Mccarty 92
Monroe 91
Contreras 97
Buckner 68
Wright 86
Walton 59
Houston 89
Powell 58
George 78
Dyer 61
Holt 86
Tran 84

二、编写程序

我是用的eclipse,先前已经和虚拟机连接过了

1.完整代码

package test;import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;public class AverageScore{public static class Map extendsMapper<LongWritable, Text, Text, IntWritable> {// 实现map函数
public void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {// 将输入的纯文本文件的数据转化成StringString line = value.toString();// 将输入的数据首先按行进行分割StringTokenizer tokenizerArticle = new StringTokenizer(line, "\n");// 分别对每一行进行处理while (tokenizerArticle.hasMoreElements()) {// 每行按空格划分StringTokenizer tokenizerLine = new StringTokenizer(tokenizerArticle.nextToken());String strName = tokenizerLine.nextToken();// 学生姓名部分String strScore = tokenizerLine.nextToken();// 成绩部分Text name = new Text(strName);int scoreInt = Integer.parseInt(strScore);// 输出姓名和成绩context.write(name, new IntWritable(scoreInt));}}
public static class Reduce extends
Reducer<Text, IntWritable, Text, IntWritable> {// 实现reduce函数public void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {int sum = 0;int count = 0;Iterator<IntWritable> iterator = values.iterator();while (iterator.hasNext()) {sum += iterator.next().get();// 计算总分count++;// 统计总的科目数
}
int average = (int) sum / count;// 计算平均成绩
context.write(key, new IntWritable(average));
}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();// 一个hdfs文件系统中的 输入目录 及 输出目录String[] ioArgs = new String[] { "hdfs://master:8020/user/averagescore","hdfs://master:8020/user/root/avgscore" };String[] otherArgs = new GenericOptionsParser(conf, ioArgs).getRemainingArgs();if (otherArgs.length != 2) {System.err.println("Usage: Score Average <in> <out>");System.exit(2);}Job job = new Job(conf, "Score Average");job.setJarByClass(AverageScore.class);// 设置Map、Combine和Reduce处理类job.setMapperClass(Map.class);job.setCombinerClass(Reduce.class);job.setReducerClass(Reduce.class);// 设置输出类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 将输入的数据集分割成小数据块splites,提供一个RecordReder的实现job.setInputFormatClass(TextInputFormat.class);// 提供一个RecordWriter的实现,负责数据输出job.setOutputFormatClass(TextOutputFormat.class);// 设置输入和输出目录FileInputFormat.addInputPath(job, new Path(otherArgs[0]));FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}}}
}

2.启动Hadoop

我这里是用的启动Hadoop的脚本

3.上传3个txt文件


我这里习惯是把文件从windows里拖入虚拟机的Downloads中

4.在eclipse中运行

5.查看最终结果

结束

这主要是我个人的一个流程,有什么问题的话欢迎大家积极讨论

编写MapReduce程序计算平均分相关推荐

  1. 如何在Hadoop上编写MapReduce程序

    1. 概述 1970年,IBM的研究员E.F.Codd博士在刊物<Communication of the ACM>上发表了一篇名为"A Relational Model of ...

  2. java mapreduce程序_简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行...

    [TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...

  3. 接收输入的一行字符,统计出字符串包含数字的个数 2、编写一个程序,计算字符串中子串出现的次数 3、请输入星期几的第1个字母,用来判断是星期几,如果第1个字母一样,则继续判断第2个字母,依次类推。

    1.接收输入的一行字符,统计出字符串包含数字的个数 list_1 = input('请输入一行字符串:') count = 0 for i in list_1:if '0' <= i <= ...

  4. c# 计算圆锥的体积_用c#编写一个程序计算出球、圆柱和圆锥的表面积和体积。...

    2011-04-27 回答 //编写一个程序计算出球,圆柱和圆锥的表面积和体积. //球体表面积a=4π*r^2,体积v=4/3π*r^3 console.writeline("请输入圆的半 ...

  5. c# 计算圆锥的体积_用C#编写一个程序计算出球,圆柱和圆锥的表面积和体积。...

    匿名用户 1级 2014-11-18 回答 //编写一个程序计算出球,圆柱和圆锥的表面积和体积. //球体表面积A=4π*R^2,体积V=4/3π*R^3 Console.WriteLine(&quo ...

  6. c语言 运算符op,1 简单计算器。请编写一个程序计算表达式:datal op data2的值。其中op为运算符+、—、*、/。...

    满意答案 770vivozf 2013.03.02 采纳率:43%    等级:9 已帮助:769人 1.简单计算器.请编写一个程序计算表达式:datal op data2的值.其中op为运算符+.- ...

  7. 【问题描述】编写一个程序计算出球、圆柱和圆锥的表面积和体积。

    [问题描述] 编写一个程序计算出球.圆柱和圆锥的表面积和体积. 要求: (1)定义一个基类,至少含有一个数据成员半径,并设为保护成员: (2)定义基类的派生类球.圆柱.圆锥,都含有求表面积和体积的成员 ...

  8. c语言算正方形面积和周长,c语言中编写一程序计算正方形的周长和面积

    C语言 编写程序,从键盘输入一个正数,计算该数的平方根. #include#includeintmain(){\x09doublex;\x09scanf("%lf",&x) ...

  9. 编写一程序计算到现在为止已经过了多少天,现在的时间是几时几分几秒

    编写一程序计算到现在为止已经过了多少天,现在的时间是几时几分几秒. 题目:假设从键盘输入从某日午夜零点到现在已过去的时间(单位:秒),编写一程序计算到现在为止已经过了多少天,现在的时间是几时几分几秒. ...

最新文章

  1. python3下载安装windows教程-Python3入门笔记(1) —— windows安装与运行
  2. 解决 /usr/share/git-cola/bin/ssh-askpass: 3: exec: wish: not found
  3. 那些年,我深爱着的PPT(一)
  4. Android BroadcastReceiver中播放提示语音有时失效问题
  5. cors跨域_Spring Boot 中通过 CORS 解决跨域问题
  6. bit不是java基本类型吗_Java bit / byte 基本数据类型
  7. 细数黑客攻击的七大战术
  8. html出现403错误信息,网站(HTTP)出现403错误集锦,请对号入座;
  9. linux fileinfo.so,Centos 下编译安装fileinfo扩展
  10. 10.XSD 元素替换
  11. 小写的tensor接受数据,大写的Tensor()接受的是shape,数据的维度
  12. 文件与base64的互相转换操作
  13. 英特尔cpu linux驱动程序,Intel处理器现身!Linux芯片组驱动放出
  14. paypal开发整理(7)—Get Start
  15. 高德地图开放平台集成所需网址
  16. 外接显示器如何调整亮度
  17. js 数字转为罗马数字(互转换),I 、II 、 III 、IV、V
  18. 民宿运营经验分享:玩转自我营销,带动流量持续增长
  19. mysql sum提高效率_MySQL巧建sum索引帮我们提高至少100%的效率
  20. Android事件分发原理

热门文章

  1. m4a怎么转换成mp3?
  2. php mailer altbody,PHP_phpmailer 中文使用说明(简易版),phpmailer v5.1下载 A开头: $AltBody - phpStudy...
  3. fNIRS–EEG监测人脑活动和氧合作用的研究进展
  4. AI面临产业大考:落地虽难,但产业化路径已日渐清晰
  5. SptingBoot+RabbitMQ整合出现的异常【Connection reset和Channel shutdown: connection error和ForgivingExceptionHa】
  6. 用 js 开启本地服务器,实现短信发送
  7. Android KitKat 外部存储权限分析
  8. C++多线程std::async、std::future、std::packaged_task、std::promise
  9. unity material之tiling和offset属性
  10. HFSS15 win10安装