Map端的聚合操作Combiner
需求
词频统计,假设有一个文件,统计这个文件词频
常见的解决办法
例如原始文本是:
交给两个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相关推荐
- MapReduce代码编写--求性别人数、求总分、关联、map端的过滤、combiner预聚合
主要基于数据 #students.txt /* 1500100001,施笑槐,22,女,文科六班 1500100002,吕金鹏,24,男,文科六班 1500100003,单乐蕊,22,女,理科六班 1 ...
- 深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析
在上一篇<深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析>提到经过迭代计算后, SortShuffleWriter.write中: // 根据排序方 ...
- 32查运行内存的map文件_Spark Shuffle调优之调节map端内存缓冲与reduce端内存占比
本文首先介绍Spark中的两个配置参数: spark.shuffle.file.buffer map端内存缓冲 spark.shuffle.memoryFraction reduce端内存占比 很多博 ...
- 【大数据day14】——MapReduce的运行机制详解(案列:Reduce 端实现 JOIN, Map端实现 JOIN,求共同好友)
文章目录 1 .MapReduce的运行机制详解 1.1:MapTask 工作机制 详细步骤 配置 1.2 :ReduceTask 工作机制 详细步骤 1.3:Shuffle 过程 2. 案例: Re ...
- java8 reduce的用法_Java8中聚合操作collect、reduce方法详解
下面我们一起来了解一下关于Java8中聚合操作collect.reduce方法,希望这篇文章能够帮助到各位java初学者. Stream的基本概念 Stream和集合的区别: Stream不会自己存储 ...
- MongoDB 聚合操作
MongoDB 聚合操作 在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多 ...
- limit mongodb 聚合_MongoDB 聚合操作(转)
在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...
- Mongodb的游标,索引,聚合操作与MapReduce
2019独角兽企业重金招聘Python工程师标准>>> 游标 > for(i=0;i<100;i++){ ... db.c.insert({x:i}) ... } Wri ...
- java 聚合_Java 8 聚合操作详解
Oracle在2014年3月19日如期发布了Java 8.Java 8版本被认为是具有里程碑意义的一个版本,Oracle在该版本中添加了许多新特性,包括Lambda表达式.方法引用.加强了安全等等. ...
最新文章
- LeetCode 845. 数组中的最长山脉
- php上传报文,PHP-02.文件上传、php保存/转移上传的文件、常见的网络传输协议、请求报文及属性、响应报文及属性...
- 负载均衡服务器nginx详细安装教程及网络部署
- jQuery 7 节点遍历
- 【分享】SMTP工作原理大剖析
- wxWidgets:wxRearrangeList类用法
- [JavaWeb-HTTP]HTTP概念
- 磁珠 符号_贴片磁珠功能_贴片磁珠应用
- 执行计划:SET AUTOTRACE TRACEONLY
- 三菱fx2n64mr说明书_三菱FX2N-64MR-D编程手册(FX系列可编程控制器) - 三菱
- win8更改计算机锁屏时间,win8如何设置电脑屏保时间设置方法
- 光固化3D打印 一
- Excel如何从身份证号码中提取性别
- 数字转换大写 python_数字转换
- matlab中的对数log()使用
- c语言 电阻器的分类,电阻器的分类与特点
- 嵌入式工程师必备开发工具
- 2016届腾讯实习生招聘上海站回忆版
- allrgro17.2转AD19方法,实测
- 第三章 流程控制语句
热门文章
- Maven警告:“java使用了未经检查或不安全的操作。java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。“
- Python的seaborn库(图比较炫)
- 《程序员》2月精彩内容:互联网应用架构面面观
- sublime text2 用ctags插件实现方法定位(转)
- C语言寻找错误是哪个快捷键,求大佬改正寻找一下错误,
- 计算机科学与技术属于教育技术学么,计算机教育-计算机教育与教育技术学有什么不同吗?我学的专业是计算机教育,我想 爱问知识人...
- linux内核在什么目录结构,Linux Kernel 目录结构说明
- php 扩展 mysql_PHP链接MySQL的常用扩展函数
- php统计凌晨6点,凌晨是哪一段时间,0:00-6:00(午夜到天亮前)
- mvn项目Quartz简单上手