本文讨论了四种主要的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设计模式相关推荐

  1. 四种常见的MapReduce设计模式

    为什么80%的码农都做不了架构师?>>>    MapReduce设计模式(MapReduce Design Pattern) 整个MapReduce作业的阶段主要可以分为以下四种: ...

  2. Apache Spark中实现的MapReduce设计模式

    该博客是该系列文章的第一篇,讨论了MapReduce设计模式一书中的一些设计模式,并展示了如何在Apache Spark(R)中实现这些模式. 在编写MapReduce或Spark程序时,考虑执行作业 ...

  3. MapReduce设计模式学习

    一:概要模式 1:简介 概要设计模式更接近简单的MR应用,因为基于键将数据分组是MR范型的核心功能,所有的键将被分组汇入reducer中 本章涉及的概要模式有数值概要(numerical summar ...

  4. java mapreduce 标准差_MapReduce设计模式之概要设计模式

    什么是概要设计模式 概要分析师将相似数据分组到一起并执行类似统计计算.索引生成或简单计数等后续的分析操作. 概要设计模式有哪些分类? (1)数值概要 (2)倒排索引概要 (3)计数器计数等等. 数值概 ...

  5. 从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL

    摘要: SQL基础有这些操作(按照执行顺序来排列): from join(left join, right join, inner join, outer join ,semi join) where ...

  6. 从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL 1

    摘要: SQL基础有这些操作(按照执行顺序来排列): from join(left join, right join, inner join, outer join ,semi join) where ...

  7. 设计模式的1000+篇文章总结

    设计模式的1000+篇文章总结 本文收集和总结了有关设计模式的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:https://www.ai2news.com/, 其分享了有关 ...

  8. 图解大数据 | 分布式平台Hadoop与Map-Reduce详解

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/84 本文地址:https://www.showmeai.tech/article-d ...

  9. Hadoop书籍和网络资源介绍

    本文介绍Hadoop Core(MapReduce和HDFS)相关的书籍和网络资源. [Hadoop书籍] 这些书均可以从http://ishare.iask.sina.com.cn/上下载电子版,有 ...

最新文章

  1. NCEPU:线下组队学习周报(007)
  2. 别让不好意思害了你 。
  3. 【渝粤教育】21秋期末考试市场调查与预测10243k2
  4. 双极结型三极管及放大电路基础
  5. 取消vs2013在代码中的Reference数量功能
  6. seo查询系统php源码,2020版SEO计费系统的源码
  7. Vue学习笔记之Nodejs中的NPM使用
  8. 关于strcpy的安全函数的选择
  9. jeb安装教程_JEB2插件教程之一
  10. slam和orbslam3环境配置
  11. 应用程序无法正常启动0xc0150002 解决方案
  12. excel拆分单元格内容_Excel中最神奇的一个快捷键!牛!!
  13. python类和对象的应用:烤地瓜
  14. 给俺的 CSDN 博客加背景音乐 - 高大尚的《心经》背景音乐
  15. 51单片机c语言dac0832产生波形,基于51单片机的DAC0832波形发生器设计
  16. 给div盒子设置背景图片
  17. RBF论ADSE(千万别学英语)之合理性
  18. PHP --方法调用
  19. jQuery 如何通过 ID 选择器 获取动态ID
  20. TextTranslatorOpenSource-文本翻译器开源版

热门文章

  1. Codeforces数学1600----day1[同余定理,树状数组+两次二分,,组合计数]
  2. android setting.java,Android Setting 启动流程总结
  3. 解题报告(十五)莫比乌斯反演与积性函数(ACM / OI)
  4. L - Oil Deposits HDU - 1241
  5. tomcat7修改内存 win_详解Windows下调整Tomcat启动参数的实现方法
  6. 从0到1,了解NLP中的文本相似度
  7. 深入理解Presto(1) : Presto的架构
  8. easyui中的tree数据使用说明
  9. [问题解决] Python中 == 与 is 的区别
  10. 智慧城市建设中的五个误区和四大难点