SQL如何在Mapreduce执行


左边是数据表,右边是结果表,这条 SQL 语句对 age 分组求和,得到右边的结果表,到底一条简单的 SQL 在 MapReduce 是如何被计算, MapReduce 编程模型只包含 map 和 reduce 两个过程,map 是对数据的划分,reduce 负责对 map 的结果进行汇总。

select id,age,count(1) from student_info group by age

首先看 map 函数的输入的 key 和 value,输入主要看 value,value 就是 user_info 表的每一行数据,输入的 value 作为map函数输出的 key,输出的 value 固定为 1,比如<<1,17>,1>。 map 函数的输出经过 shuffle 处理,shuffle 把相同的 key 以及对应的 value 组合成新<key,value集合>,从 user_info 表看出map输出 2 次<<1,17>,1>,那么经过 shuffle 处理后则会输出<<1,17>,<1,1>>,并将输出作为 reduce 函数的输入。

在 reduce 函数会把所有 value 进行相加后输出结果,<<1,17>,<1,1>>输出为<<1,17>,2>。 这就是一条简单 SQL 在 Mapreduce 执行过程,可能你会有点迷糊,在这里我画了一张流程图,结合流程图你会更加清楚。

https://www.cnblogs.com/TFengStorm/p/10198853.html

最新文章

  1. ABP源码分析四:Configuration
  2. AnguarJS 第二天----数据绑定
  3. 算法:POJ1006 三重峰值问题
  4. Spring Trasnaction管理(3)- 事务嵌套
  5. Android studio修改Logcat颜色
  6. jstl fn标签
  7. Linux使用笔记: 定制core dump文件的文件名
  8. day06 Java面向对象
  9. linux eval命令
  10. DedeCms 建站随笔(一)
  11. python-大话装饰器
  12. c++内存对齐 转载
  13. java基础练习 11
  14. 【转】JDBC学习笔记(2)——Statement和ResultSet
  15. python各种运算优先级一览表
  16. 使用Spring-boot小结
  17. JS时间的获取及格式
  18. 【原创】Linux基础之查看linux发行版以及内核版本
  19. crontab,定时任务执行找不到库or shell可执行,crontab 定时任务下就不能执行,tensorflow,ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
  20. 普元eos、soa、esb

热门文章

  1. C++中string类
  2. Andriod——手机尺寸相关的概念 +尺寸单位+关于颜色
  3. Java中的队列都有哪些,有什么区别?
  4. Linux惊群效应详解
  5. 发送邮件--MFMailComposeViewController
  6. Delphi,C语言互通脚本引擎研究
  7. How to change and add some params to request in Laravel controller?
  8. [Robot Framework] Robot Framework里面的变量怎么知道是在哪里定义的?
  9. javascript对象bind()方法兼容处理
  10. 之前的一些Oracle的经验总结