1. china
    张三 78
    李四 89
    王五 96
    赵六 67
    english
    张三 80
    李四 82
    王五    84
    赵六 86
    math
    张三 88
    李四 99
    王五 66
    赵六 77
  2.  
  3. import java.io.IOException;
  4.  
  5. import org.apache.hadoop.conf.Configuration;
  6. import org.apache.hadoop.fs.Path;
  7. import org.apache.hadoop.io.IntWritable;
  8. import org.apache.hadoop.io.FloatWritable;
  9. import org.apache.hadoop.io.Text;
  10. import org.apache.hadoop.mapreduce.Job;
  11. import org.apache.hadoop.mapreduce.Mapper;
  12. import org.apache.hadoop.mapreduce.Reducer;
  13. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  14. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
  15. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  16. import org.apache.hadoop.mapreduce.lib.reduce.IntSumReducer;
  17.  
  18. public class MyAverage {
  19.  
  20. public static class FormatMapper extends Mapper<Object, Text, Text, IntWritable>{
  21.  
  22. private IntWritable val = new IntWritable();
  23.  
  24. public void map(Object key, Text value, Context context) throws IOException, InterruptedException{
  25. String line[] = value.toString().split("\\s");
  26. val.set(Integer.parseInt(line[]));
  27. context.write(new Text(line[]), val);
  28. }
  29. }
  30.  
  31. public static class AverageReducer extends Reducer<Text, IntWritable, Text, FloatWritable>{
  32. public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{
  33. int count = ;
  34. int sum = ;
  35. for (IntWritable val : values) {
  36. sum += val.get();
  37. count ++;
  38. }
  39. float ave = (float)sum / count;
  40. context.write(key, new FloatWritable(ave));
  41. }
  42. }
  43.  
  44. public static void main(String[] args) throws Exception {
  45. String dir_in = "hdfs://localhost:9000/in_average";
  46. String dir_out = "hdfs://localhost:9000/out_average";
  47.  
  48. Path in = new Path(dir_in);
  49. Path out = new Path(dir_out);
  50.  
  51. Configuration conf = new Configuration();
  52. Job averageJob = new Job(conf, "my_average");
  53.  
  54. averageJob.setJarByClass(MyAverage.class);
  55.  
  56. averageJob.setInputFormatClass(TextInputFormat.class);
  57. averageJob.setMapperClass(FormatMapper.class);
  58. averageJob.setCombinerClass(IntSumReducer.class);
  59. //countJob.setPartitionerClass(HashPartitioner.class);
  60. averageJob.setMapOutputKeyClass(Text.class);
  61. averageJob.setMapOutputValueClass(IntWritable.class);
  62.  
  63. FileInputFormat.addInputPath(averageJob, in);
  64.  
  65. averageJob.setReducerClass(AverageReducer.class);
  66. //averageJob.setNumReduceTasks(1);
  67. averageJob.setOutputKeyClass(Text.class);
  68. averageJob.setOutputValueClass(FloatWritable.class);
  69. //countJob.setOutputFormatClass(SequenceFileOutputFormat.class);
  70.  
  71. FileOutputFormat.setOutputPath(averageJob, out);
  72.  
  73. averageJob.waitForCompletion(true);
  74.  
  75. }
  76.  
  77. }
  1. 张三 82.0
  2. 李四 90.0
  3. 王五 82.0
  4. 赵六 76.666664
  1.  
  1.  

Hadoop 学习笔记 (十一) MapReduce 求平均成绩的更多相关文章

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

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

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

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

  3. 【Big Data - Hadoop - MapReduce】hadoop 学习笔记:MapReduce框架详解

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

  4. hadoop 学习笔记:mapreduce框架详解(转)

    原文:http://www.cnblogs.com/sharpxiajun/p/3151395.html(有删减) Mapreduce运行机制 下面我贴出几张图,这些图都是我在百度图片里找到的比较好的 ...

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

    一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出,在Step1.4也就是第四步中,需要对不同分区中的数据进行排 ...

  6. Hadoop学习笔记—12.MapReduce中的常见算法

    一.MapReduce中有哪些常见算法 (1)经典之王:单词计数 这个是MapReduce的经典案例,经典的不能再经典了! (2)数据去重 "数据去重"主要是为了掌握和利用并行化思 ...

  7. Hadoop学习笔记: MapReduce二次排序

    本文给出一个实现MapReduce二次排序的例子 package SortTest; import java.io.DataInput; import java.io.DataOutput; impo ...

  8. Hadoop学习笔记: MapReduce Java编程简介

    概述 本文主要基于Hadoop 1.0.0后推出的新Java API为例介绍MapReduce的Java编程模型.新旧API主要区别在于新API(org.apache.hadoop.mapreduce ...

  9. 三、Hadoop学习笔记————从MapReduce到Yarn

    Yarn减轻了JobTracker的负担,对其进行了解耦

随机推荐

  1. 《Linux内核设计与实现》学习笔记之“Linux进程管理机制”

    一.进程(或者称为“任务”)简介 进程是OS最基本的抽象之一,通常进程包括“可执行程序代码”,“其他资源”(如:打开的文件,挂起的信号,内核内部数据,处理器状态,地址空间,一个或多个执行线程等) 二. ...

  2. 即时通讯(IM)

    即时通讯(IM)功能是APP的重要功能之一,而开发好移动IM却绝非易事.通常来说,IM技术选型至少要解决以下问题:1. 协议选型 2. IM服务器选型 3. 对协议和服务器做相应修改,通常来说直接拿个 ...

  3. 百度的android采访分析

    今天早上10分,我接到一个电话采访百度.当然,我说提前.我的病是多么强烈延迟.所以我也没怎么准备,当然,我也看他们的真实水平的思考.在这次审查中! ! ! ! ! !! .! ! ! !.!! !.! ...

  4. mybatis03

    .2导入jar包 从mybatis管网下载(地址:https://github.com/mybatis/mybatis-3/releases) mybatis-.pdf---操作手册 mybatis- ...

  5. 基于事件的 NIO 多线程服务器--转载

    JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处 ...

  6. Servlet中文乱码解决方法

    程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件. 字节流和字符流的区别: 在Java.io包中操作文件内容的主要有两大类:字节流.字符流,两类都分为输入和输出操作. 在字节流中输 ...

  7. WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解(转载)

    1.1 WS_CLIPCHILDREN WS_CLIPCHILDREN样式从字面上可以理解成ClipChildren,裁减子窗口. MSDN里的E文解释:Excludes the area occup ...

  8. JavaScript小笔记の经典算法等....

    1.利用toString()里面的参数,实现各进制之间的快速转换: var n = 17; binary_string = n.toString(2); //->二进制"10001&q ...

  9. Java-Android 之应用停止错误

    在Android在手机上运行的时候: 经常会出现应用程序停止: 一: 因为触发的方法里面没有传值View 对象,方法报错

  10. Log4net 集成到MVC+EF框架

    前提引用Log4Net.dll文件 1. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", ...