china:张三 78李四 89王五 96赵六 67english张三 80李四 82王五    84赵六 86math张三 88李四 99王五 66赵六 77

import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.FloatWritable;
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.reduce.IntSumReducer;public class MyAverage {public static class FormatMapper extends Mapper<Object, Text, Text, IntWritable>{private IntWritable val = new IntWritable();public void map(Object key, Text value, Context context) throws IOException, InterruptedException{String line[] = value.toString().split("\\s");val.set(Integer.parseInt(line[1]));context.write(new Text(line[0]), val);}}public static class AverageReducer extends Reducer<Text, IntWritable, Text, FloatWritable>{public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{int count = 0;int sum = 0;for (IntWritable val : values) {sum += val.get();count ++;}float ave = (float)sum / count;context.write(key, new FloatWritable(ave));}}public static void main(String[] args) throws Exception {String dir_in = "hdfs://localhost:9000/in_average";String dir_out = "hdfs://localhost:9000/out_average";Path in = new Path(dir_in);Path out = new Path(dir_out);Configuration conf = new Configuration();Job averageJob = new Job(conf, "my_average");averageJob.setJarByClass(MyAverage.class);averageJob.setInputFormatClass(TextInputFormat.class);averageJob.setMapperClass(FormatMapper.class);averageJob.setCombinerClass(IntSumReducer.class);//countJob.setPartitionerClass(HashPartitioner.class);averageJob.setMapOutputKeyClass(Text.class);averageJob.setMapOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(averageJob, in);averageJob.setReducerClass(AverageReducer.class);//averageJob.setNumReduceTasks(1);averageJob.setOutputKeyClass(Text.class);averageJob.setOutputValueClass(FloatWritable.class);//countJob.setOutputFormatClass(SequenceFileOutputFormat.class);
FileOutputFormat.setOutputPath(averageJob, out);averageJob.waitForCompletion(true);}}
张三    82.0
李四    90.0
王五    82.0
赵六    76.666664

 

Hadoop 学习笔记 (十一) MapReduce 求平均成绩相关推荐

  1. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  2. Hadoop学习笔记:MapReduce框架详解

    原文:http://blog.jobbole.com/84089/ 原文出处: 夏天的森林 开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手, ...

  3. hadoop 学习笔记:mapreduce框架详解

    开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能 ...

  4. hadoop详细笔记(十一) mapreduce数据分析案例之线段重叠案例

    1 数据 1,4 2,5 3,4 2,5 2,4 3,4 2,6 2 需求 统计x轴上每个点线段重叠的次数 3 代码实现 package com._51doit.mr.line;import org. ...

  5. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个 编程模型 ,用以进行大数据量的计算.对于大 数据量的计算,通常采用的处理手法就是并行计算.但对许多开 ...

  6. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...

  7. Hadoop学习笔记一 简要介绍

    Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop.     本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一 ...

  8. Hadoop学习笔记(1) ——菜鸟入门

     Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下.开发分布式 ...

  9. Hadoop学习笔记(1)

    原文:http://www.cnblogs.com/zjfstudio/p/3859704.html Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分 ...

最新文章

  1. GTX1080 安装 cuda 8.0 + cuDNN5.1
  2. 《数学之美》第21章 拼音输入法的数学原理
  3. Android典型界面设计(4)——使用ActionBar+Fragment实现tab切换
  4. python乘法口诀代码-浅析一句python代码成生九九乘法表
  5. 河南农大姚文与张会勇课题组合作发表长文综述,系统总结R/Shiny在开发交互式生物学网络工具中的应用...
  6. MyBatis3教程
  7. javaScript this指向问题
  8. android-studio-ide下载安装配置JDK第一个helloworld 一条龙
  9. html日期选择器小日历样式,9 款样式华丽的 jQuery 日期选择和日历控件
  10. 教你itunes电脑版怎么下载
  11. 数电快速入门(三)(卡诺图化简法的介绍)
  12. 2021漏洞扫描服务TOP20排行榜
  13. 小麦(Wheat)-玉米(Maize)-水稻(Rice) 数粒软件
  14. 二叉树的python实现
  15. linux lightdm自动登录,设置了XFCE/lightDM启用自动登录,还是需要'点击'登录两字才能进入桌面...
  16. python做相册_Python编程:制作电子相册
  17. 游戏框架 核心科技与面试精粹 (樊松阳 著)
  18. PC谷歌浏览器测试手机端安卓、IOS网页
  19. 【Unity开发总结】C# 闭包陷阱
  20. 数字分割(拆数字)的两种方法

热门文章

  1. 对于有A[0…N]有序的数组,判断是否存在A[i]=I 如果存在的话返回Index,
  2. vba 定义类_VBA|自定义类型、枚举类型和类模块及其使用
  3. 网站漏洞扫描工具Uniscan
  4. Swift2.0语言教程之类的嵌套与可选链接
  5. js mysql 住宿系统_[源码和文档分享]基于JavaScript和MySQL实现的酒店管理系统
  6. [python数据分析] 简述幂率定律及绘制Power-law函数
  7. linux驱动模块makefile,linux驱动makefile求解
  8. mysql隔离级别加锁情况_MySQL数据库事务各隔离级别加锁情况--read committed amp;amp; MVCC...
  9. 武大50名学生将卫星送上天!用了老师800万科研经费,搭长征八号“顺风车”升空...
  10. 蓝色起源送90岁《星际迷航》舰长扮演者上太空,刷新太空旅客最高年龄纪录...