wordCount的解析
MapReduce的过程
(input)<k1, v1>->map-><k2, v2>->combine-><k2, v2>->reduce-><k3,v3>(output)

适合用 MapReduce 来处理的数据集(或任务)有一个基本要求: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
计算模型的核心是 Map 和 Reduce 两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的 <key, value> 对转换成另一个或一批 <key, value> 对输出。
下面以WordCount为例说明下MapReduce的过程
函数 输入 wordcount中的输入 输出 wordcount中的输出
map <k1, v1>
<行在文件中的偏移位置, 文件中的一行>
List(<k2,v2>)
List<单词,1(代表单词出现了一次)>
reduce
<k2,List(v2)>
<单词,List(1(代表单词出现了一次))>
<k3,v3>
<单词,单词出现次数>

<k1,v1> 是 <行在文件中的偏移位置, 文件中的一行>,经 Map 函数映射之后,形成一批中间结果 <单词,出现次数>, 而 Reduce 函数则可以对中间结果进行处理,将相同单词的出现次数进行累加,得到每个单词的总的出现次数。

下面结合wordCount的源码说明
public static class TokenizerMapper extends
          Mapper<Object, Text, Text, IntWritable> {
     private final static IntWritable one = new IntWritable(1);//IntWritable为hadoop的int io类
     private Text word = new Text();//Text为hadoop的文本io类
     @Override
     public void map(Object key, Text value, Context context)//map接口,参数key value 对应k1,v1
               throws IOException, InterruptedException {
          //StringTokenizer是一个分割单词的流

StringTokenizer itr = new StringTokenizer(value.toString());

          //循环读取Text中的单词
          while (itr.hasMoreTokens()) {
               this.word.set(itr.nextToken());
               context.write(this.word, one);//这里输出<k2,v2> 即<单词,1(代表单词出现了一次)> 在循环中输出,所以输出多个,即输出一个List<k2,v2>
          }
     }
}
public static class IntSumReducer extends
          Reducer<Text, IntWritable, Text, IntWritable> {
     private IntWritable result = new IntWritable();//IntWritable为hadoop的int io类
     @Override
     public void reduce(Text key, Iterable<IntWritable> values,
               Context context) throws IOException, InterruptedException {//reduce接口,参数key value 对应k2 List<v2>
          int sum = 0;
          //循环遍历List<v2>
          for (IntWritable val : values) {
               sum += val.get();//get到的都是1,每执行一次+1
          }
          this.result.set(sum);
          context.write(key, this.result);//<k3,v3> k3为单词,v3对应出现次数
     }
}

wordCount的解析相关推荐

  1. 大数据入门:WordCount程序解析

    大数据入门:WordCount程序解析 文章目录 大数据入门:WordCount程序解析 一.输入 二.程序解析 三.输出 四.需要注意的地方 为一个顽固的家伙写的,都要考试了还不让我给详细讲一下,我 ...

  2. mapreduce实现wordcount 详细解析

    总括 Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(G ...

  3. spark wordcount函数解析

    2019独角兽企业重金招聘Python工程师标准>>> sc.textFile("hdfs://sniper5:9000/hello.txt").flatMap( ...

  4. 初学Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  5. 【Big Data - Hadoop - MapReduce】初学Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  6. Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  7. 零基础学习hadoop到上手工作线路指导(中级篇)

    2019独角兽企业重金招聘Python工程师标准>>> 此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结. 五一假期:在写点内容,也算是总结.上面我们会 ...

  8. java编译找不到符号_javac编译时找不到符号?

    我是个新手,在linux使用java编程时,出现这个情况. 我把要引的包放在classpath中,红色部分: export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAV ...

  9. (超详细)MapReduce工作原理及基础编程

    MapReduce工作原理及基础编程(代码见文章后半部分) JunLeon--go big or go home 目录 MapReduce工作原理及基础编程(代码见文章后半部分) 一.MapReduc ...

最新文章

  1. PX4编写msg文件
  2. 电商系统如何做搜索引擎?
  3. UbuntuでPostgreSQLをインストールからリモートアクセスまでの手順
  4. final 修饰方法参数
  5. ClassLoader工作机制
  6. 简述container与container-fluid的区别
  7. OC与JS交互 初体会
  8. SQLServer中批量插入数据方式的性能对比
  9. document.frames()与document.frames[]的区别
  10. Python 核心编程 (全)
  11. python正则表达式实战中的总结
  12. Word插入Latex公式的几种方式(TeXsWord、EqualX、Aurora等工具)
  13. matlab 求不定积分与定积分
  14. 华为TechWave峰会上主推的分布式云到底什么来头?
  15. Rdlc报表纵向与横向打印问题
  16. 用matlab怎么画出y=sin(t)的导函数图像?用diff为什么一阶导函数会缩小100倍,二阶导函数会缩小1000倍。求大神指教
  17. VBScript脚本语言基础
  18. 清华大学董家鸿:智慧医疗,肝胆守望
  19. 收藏一些很炫的html特效
  20. 天然气管道折弯测量与失效分析

热门文章

  1. GPU内存分明没人占用但是分配不了内存的解决办法
  2. 配置GitHub二级域名,xxx.github.io
  3. 如何使用uTorrent制作自己的种子
  4. python strptime_Python法律实务应用——制作自己的LPR计算器
  5. 这样干前端你早该考虑离职了
  6. 不装了,我开源了5款人脸生成器!超模脸、网红脸、萌娃脸...
  7. 场内场外交易成本_场内基金与场外基金各有什么优劣势?
  8. ABAQUS 2020 license冲突解决
  9. vue 引入 自定义字体文件
  10. 安装IE11提示“Internet Explorer在安装前需要更新”