需求

词频统计,假设有一个文件,统计这个文件词频

常见的解决办法

例如原始文本是:
交给两个Map去处理,map1处理hello is hello is,map2处理hadoop is hadoop is hadoop,输出结果map1为:(hello,1)(is, 1)(hello, 1)(is, 1),map2为(hadoop,1)(is, 1)(hadoop, 1)(is, 1)(hadoop,1)。然后把结果给shuffle,shuffle按照相同的key(会按照字典顺序排序)丢给Reducer中去处理。

问题

map1中有4个Key,map2中有4个Key,一共9个Key。但是在Reducer中一共只输出了3个Key。如果map1中处理1000万个key,第二个处理1000万个Key,所有的数据都要经过网络传输,性能一定会受影响。

解决办法

如果在map端再做一次聚合,是不是就会提高性能了。这个聚合的操作和我们的Reduce逻辑完全一样。

这个Map端的聚合操作就叫做Combiner。
这样能很大程度上节省网络开销。

实现方法


跟Reducer的方法是一样的,直接添加上Reducer就可以了。

Combiner的优点

能减少IO,提升作业的执行性能

Combiner的局限性

在求平均数的场景下,会出现错误的结果。

Map端的聚合操作Combiner相关推荐

  1. MapReduce代码编写--求性别人数、求总分、关联、map端的过滤、combiner预聚合

    主要基于数据 #students.txt /* 1500100001,施笑槐,22,女,文科六班 1500100002,吕金鹏,24,男,文科六班 1500100003,单乐蕊,22,女,理科六班 1 ...

  2. 深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析

    在上一篇<深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析>提到经过迭代计算后, SortShuffleWriter.write中: // 根据排序方 ...

  3. 32查运行内存的map文件_Spark Shuffle调优之调节map端内存缓冲与reduce端内存占比

    本文首先介绍Spark中的两个配置参数: spark.shuffle.file.buffer map端内存缓冲 spark.shuffle.memoryFraction reduce端内存占比 很多博 ...

  4. 【大数据day14】——MapReduce的运行机制详解(案列:Reduce 端实现 JOIN, Map端实现 JOIN,求共同好友)

    文章目录 1 .MapReduce的运行机制详解 1.1:MapTask 工作机制 详细步骤 配置 1.2 :ReduceTask 工作机制 详细步骤 1.3:Shuffle 过程 2. 案例: Re ...

  5. java8 reduce的用法_Java8中聚合操作collect、reduce方法详解

    下面我们一起来了解一下关于Java8中聚合操作collect.reduce方法,希望这篇文章能够帮助到各位java初学者. Stream的基本概念 Stream和集合的区别: Stream不会自己存储 ...

  6. MongoDB 聚合操作

    MongoDB 聚合操作 在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多 ...

  7. limit mongodb 聚合_MongoDB 聚合操作(转)

    在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...

  8. Mongodb的游标,索引,聚合操作与MapReduce

    2019独角兽企业重金招聘Python工程师标准>>> 游标 > for(i=0;i<100;i++){ ... db.c.insert({x:i}) ... } Wri ...

  9. java 聚合_Java 8 聚合操作详解

    Oracle在2014年3月19日如期发布了Java 8.Java 8版本被认为是具有里程碑意义的一个版本,Oracle在该版本中添加了许多新特性,包括Lambda表达式.方法引用.加强了安全等等. ...

最新文章

  1. LeetCode 845. 数组中的最长山脉
  2. php上传报文,PHP-02.文件上传、php保存/转移上传的文件、常见的网络传输协议、请求报文及属性、响应报文及属性...
  3. 负载均衡服务器nginx详细安装教程及网络部署
  4. jQuery 7 节点遍历
  5. 【分享】SMTP工作原理大剖析
  6. wxWidgets:wxRearrangeList类用法
  7. [JavaWeb-HTTP]HTTP概念
  8. 磁珠 符号_贴片磁珠功能_贴片磁珠应用
  9. 执行计划:SET AUTOTRACE TRACEONLY
  10. 三菱fx2n64mr说明书_三菱FX2N-64MR-D编程手册(FX系列可编程控制器) - 三菱
  11. win8更改计算机锁屏时间,win8如何设置电脑屏保时间设置方法
  12. 光固化3D打印 一
  13. Excel如何从身份证号码中提取性别
  14. 数字转换大写 python_数字转换
  15. matlab中的对数log()使用
  16. c语言 电阻器的分类,电阻器的分类与特点
  17. 嵌入式工程师必备开发工具
  18. 2016届腾讯实习生招聘上海站回忆版
  19. allrgro17.2转AD19方法,实测
  20. 第三章 流程控制语句

热门文章

  1. Maven警告:“java使用了未经检查或不安全的操作。java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。“
  2. Python的seaborn库(图比较炫)
  3. 《程序员》2月精彩内容:互联网应用架构面面观
  4. sublime text2 用ctags插件实现方法定位(转)
  5. C语言寻找错误是哪个快捷键,求大佬改正寻找一下错误,
  6. 计算机科学与技术属于教育技术学么,计算机教育-计算机教育与教育技术学有什么不同吗?我学的专业是计算机教育,我想 爱问知识人...
  7. linux内核在什么目录结构,Linux Kernel 目录结构说明
  8. php 扩展 mysql_PHP链接MySQL的常用扩展函数
  9. php统计凌晨6点,凌晨是哪一段时间,0:00-6:00(午夜到天亮前)
  10. mvn项目Quartz简单上手