文档章节

Hadoop案例求平均成绩

蓝狐乐队
 蓝狐乐队
发布于 2014/02/21 22:02
字数 233
阅读 141
收藏 1
 
//思路根据hadoop原理归并相同人名,以人名为key,以各科成绩为value容器元素,计算容器值的和,除以科目数。
public class AverageScore {
public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{
 
 private Text word = new Text();
   
 public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
   //按照行分割
  StringTokenizer line = new StringTokenizer(value.toString(),"\n");
   
   while (line.hasMoreElements()) {
      //按照空格分割
      StringTokenizer lineBlock = new StringTokenizer(line.nextToken());
   String stuName = lineBlock.nextToken();
   int stuScore = Integer.parseInt(lineBlock.nextToken());  
         word.set(stuName);
         context.write(word, new IntWritable(stuScore));
   }
 }
}
public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
 private IntWritable result = new IntWritable();
 public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
   int sum = 0;
   int count =0;
   while(values.iterator().hasNext()){
    sum+=values.iterator().next().get();
    count++;
   }
   int average = sum/count;
   result.set(average);
   context.write(key, result);
 }
}
public static void main(String[] args) throws Exception {
 Configuration conf = new Configuration();
 String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
 if (otherArgs.length != 2) {
   System.err.println("Usage: wordcount <in> <out>");
   System.exit(2);
 }
 Job job = new Job(conf, "word count");
 job.setJarByClass(AverageScore.class);
 job.setMapperClass(TokenizerMapper.class);
 job.setCombinerClass(IntSumReducer.class);
 job.setReducerClass(IntSumReducer.class);
 job.setOutputKeyClass(Text.class);
 job.setOutputValueClass(IntWritable.class);
 FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
 FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
 System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}

© 著作权归作者所有

上一篇: hadoop mapreduce实例
下一篇: Hadoop知识点记录
蓝狐乐队
粉丝 107
博文 325
码字总数 94335
作品 0
昌平
程序员
私信 提问
sqlserver作业--嵌套查询

查询成绩比该课程平均成绩高的学生的学号、课程号及成绩 第一:查询成绩比课程01平均成绩高的学号、课程和成绩 select Sno,Cno,Degree from SCwhere Degree > (select AVG(Degree) from SC ...

开源中国段子手
2015/11/20
40
0
T-SQL查询语句

SQL语言中最主要、最核心的部分是它的查询功能。查询语句用来对已经存在于数据库的数据按照特定的组合、条件表达式或次序进行检索,使用SELECT语句来完成。 使用SELECT查询数据 1. SELECT语法...

杨书凡
2017/11/27
0
0
C语言题目求解

一个班级有M=7个学生,每个学生有N=3门成绩,一个学号ID。 a)由键盘输入信息,检查其合理性。 b)每个学生的平均成绩,连同学号,输出。要求每行输出一个同学, 其格式为:学号,平均成绩 c)...

HEYZOJ
2014/11/18
149
2
hadoop2 自定义OutputFormat场景杂记

提示:以下代码都是在 Hadoop2.7.x 最新API下进行。 场景1:自定义输出文件名前缀 示例:计算学生的平均分成绩,输出:学生姓名和平均分成绩;要求:根据成绩的范围(0~59, 60~70, 70~80, 8...

山哥
2016/09/28
180
0
3-5 学生成绩统计

3-5 学生成绩统计 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题目练习可以掌握对象数组的用法,主要是对象数组中数据的输入输出操作。 设计一个...

minose
2017/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

工作自由--2020年开篇,开启一个项目:工作自由 worksolo.cn

新年伊始,我突发奇想,也是很多人敢想而不敢做的事情,下面我以一个多年软件开发从业者的角度去思考,去设计这个项目,当然希望看到这篇文章的你可以给我更多思路: 项目名称:工作自由 域名...

_aron_
25分钟前
25
0
王道 第一章 计算机系统概述

这门课学的是逻辑实现,不是具体的机型 主要内容: 基本部件的结构和组织方式 基本运算的操作原理 基本部件和单元的设计思想 处理器+内存=计算机 存储器 存储器(高速缓存、主存储器、虚拟存...

heronos
今天
81
0
SpringBoot+Mybatis+Thymeleaf-Build Blog site_1

1、快速构建Springboot项目 (1)、 Spring Boot 项目目录结构介绍 (2)、 Spring Boot 项目启动的几种方式 2、 (1)、hello blog (2)、 DispatchServlet 配置 (3)、 静态 web 资源如何...

杨木发
今天
128
0
关于docker0: iptables: No chain/target/match by that name的问题解决

由于Docker 0默认网桥的iptables策略冲突问题,将导致一些web server启动时出现如下错误: docker: Error response from daemon: driver failed programming external connectivity on endpo......

王焱君
今天
103
0
js 下载 canvas 兼容移动端

很蛋疼的问题PC上好好的, 移动端下载不了 , 貌似前端 js 生成的时 base64 格式的 图片数据,移动端无法直接下载, 但是chrome 移动端和pc端都没问题, 国产的几个浏览器全部挂了 之前的下载方式...

阿豪boy
昨天
96
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部