MapReduce设计模式
本文讨论了四种主要的MapReduce设计模式:
1. Input-Map-Reduce-Output
2. Input-Map-Output
3. Input-Multiple Maps-Reduce-Output
4. Input-Map-Combiner-Reduce-Output
下面是一些真实的场景,帮助您了解何时使用哪个设计模式。
Input-Map-Reduce-Output
如果要执行聚合操作,则使用此模式:
统计工资总额,我们需要确定关键性别和价值薪酬。Map函数的输出为:
中间拆分为Reduce函数提供输入:
减少Reduce函数输出为:
Input-Map-Output
Reduce函数主要用于聚集和计算。但是,如果我们只想更改数据的格式,则使用Input-Map-Output模式:
Input-Multiple Maps-Reduce-Output
在Input-Multiple Maps-Reduce-Output设计模式中,我们的输入来自两个文件,每个文件都有不同的模式。(请注意,如果两个或多个文件具有相同的模式,则不需要两个映射器。我们可以在一个映射器类中编写相同的逻辑并提供多个输入文件。)
此模式也用于Reduce-Side Join:
Input-Map-Combiner-Reduce-Output
Apache Spark对大型和小型数据处理任务是非常有效的,因为它最好地放大了执行有效分析所需的现有工具。与其他众所周知的大数据处理引擎相比,凭借其高度可扩展性以及令人难以置信的性能,Spark最终可能会让软件吞噬整个世界。
Combiner也称为half-reducer,是一个可选类,它通过接受Map类的输入然后将输出键值对传递给Reducer类来操作。Combiner功能的目的是减少Reducer的工作量。
在MapReduce程序中,20%的工作是在Map阶段完成的,这也称为数据准备阶段。这个阶段确实可以并行工作。
80%的工作是在Reduce阶段完成的,这被称为计算阶段。这项工作不是并行完成的,因此它比Map阶段慢。为了减少计算时间,Reduce阶段的一些工作可以在Combiner阶段完成。
实例
有很多部门,我们必须先按部门计算工资总额,然后按性别计算。但是,计算这些总数还有其他规则。按性别计算每个部门的总数后:
如果部门工资总额大于20万,则在总额中加25万。
如果部门工资总额大于10万,则在总额中加10万。
希望我的文章对你有所启发,有什么更好的想法,欢迎留言!
长按二维码 ▲
订阅「架构师小秘圈」公众号
如有启发,帮我点个在看,谢谢↓
MapReduce设计模式相关推荐
- 四种常见的MapReduce设计模式
为什么80%的码农都做不了架构师?>>> MapReduce设计模式(MapReduce Design Pattern) 整个MapReduce作业的阶段主要可以分为以下四种: ...
- Apache Spark中实现的MapReduce设计模式
该博客是该系列文章的第一篇,讨论了MapReduce设计模式一书中的一些设计模式,并展示了如何在Apache Spark(R)中实现这些模式. 在编写MapReduce或Spark程序时,考虑执行作业 ...
- MapReduce设计模式学习
一:概要模式 1:简介 概要设计模式更接近简单的MR应用,因为基于键将数据分组是MR范型的核心功能,所有的键将被分组汇入reducer中 本章涉及的概要模式有数值概要(numerical summar ...
- java mapreduce 标准差_MapReduce设计模式之概要设计模式
什么是概要设计模式 概要分析师将相似数据分组到一起并执行类似统计计算.索引生成或简单计数等后续的分析操作. 概要设计模式有哪些分类? (1)数值概要 (2)倒排索引概要 (3)计数器计数等等. 数值概 ...
- 从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL
摘要: SQL基础有这些操作(按照执行顺序来排列): from join(left join, right join, inner join, outer join ,semi join) where ...
- 从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL 1
摘要: SQL基础有这些操作(按照执行顺序来排列): from join(left join, right join, inner join, outer join ,semi join) where ...
- 设计模式的1000+篇文章总结
设计模式的1000+篇文章总结 本文收集和总结了有关设计模式的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:https://www.ai2news.com/, 其分享了有关 ...
- 图解大数据 | 分布式平台Hadoop与Map-Reduce详解
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/84 本文地址:https://www.showmeai.tech/article-d ...
- Hadoop书籍和网络资源介绍
本文介绍Hadoop Core(MapReduce和HDFS)相关的书籍和网络资源. [Hadoop书籍] 这些书均可以从http://ishare.iask.sina.com.cn/上下载电子版,有 ...
最新文章
- NCEPU:线下组队学习周报(007)
- 别让不好意思害了你 。
- 【渝粤教育】21秋期末考试市场调查与预测10243k2
- 双极结型三极管及放大电路基础
- 取消vs2013在代码中的Reference数量功能
- seo查询系统php源码,2020版SEO计费系统的源码
- Vue学习笔记之Nodejs中的NPM使用
- 关于strcpy的安全函数的选择
- jeb安装教程_JEB2插件教程之一
- slam和orbslam3环境配置
- 应用程序无法正常启动0xc0150002 解决方案
- excel拆分单元格内容_Excel中最神奇的一个快捷键!牛!!
- python类和对象的应用:烤地瓜
- 给俺的 CSDN 博客加背景音乐 - 高大尚的《心经》背景音乐
- 51单片机c语言dac0832产生波形,基于51单片机的DAC0832波形发生器设计
- 给div盒子设置背景图片
- RBF论ADSE(千万别学英语)之合理性
- PHP --方法调用
- jQuery 如何通过 ID 选择器 获取动态ID
- TextTranslatorOpenSource-文本翻译器开源版
热门文章
- Codeforces数学1600----day1[同余定理,树状数组+两次二分,,组合计数]
- android setting.java,Android Setting 启动流程总结
- 解题报告(十五)莫比乌斯反演与积性函数(ACM / OI)
- L - Oil Deposits HDU - 1241
- tomcat7修改内存 win_详解Windows下调整Tomcat启动参数的实现方法
- 从0到1,了解NLP中的文本相似度
- 深入理解Presto(1) : Presto的架构
- easyui中的tree数据使用说明
- [问题解决] Python中 == 与 is 的区别
- 智慧城市建设中的五个误区和四大难点