架构师训练营 12 周作业
MapReduce分布式计算引擎的编程模型分为两部分,即map和reduce。理解其运行机制的核心关键点是理解map和reduce这两个方法的输入和输出分别是什么?理解这一点,我们就理解了MapReduce的运行机制。
直接分析一个例子:
分析如下 HiveQL,生成的 MapReduce 执行程序,map 函数输入是什么?输出是什么,reduce 函数输入是什么?输出是什么?
Page_view 表和 user 表结构与数据示例如下:
分析过程:
1、要素包括:
两张表:page_view、user
查询字段:page_view.pageid、user.age
表关联字段:userid
2、map的输入:
两个数据表的一行行记录。同时由于涉及多个表,需要对每个表做标识,比如1代表page_view表,2代表user表。
3、map的输出:
由于需要根据userid做表关联,故map的输出格式为:
page_view表:<userid>:<tableId,pageid>,
user表:<userid>:<tableId,age>.
具体如下:
<111>:<1,1>
<111>:<1,2>
<222>:<1,1>
<111>:<2,25>
<222>:<2,32>
4、reduce的输入:
map的输入会经过一个shuffle sort过程,同一个key的value整合成一个列表,输入到reduce方法,如下:
<111>:[<1,1>,<1,2>,<2,25>]
<222>:[<1,1>,<2,32>]
5、reduce的输出:
针对每个key整合value列表,通过两层循环(先循环取表1的每条记录,循环跟表2的每条记录组合),将表1和表2的value组合成最终的结果如下:
<1,25>、<2,25>、<1,32>。
下面用一张图表示全部过程:
,
发布于: 2020 年 09 月 02 日阅读数: 13
版权声明: 本文为 InfoQ 作者【林昱榕】的原创文章。
原文链接:【https://xie.infoq.cn/article/1ccb1ae1b04225c0ac85af1fe】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论