写点什么

架构师训练营第十二周命题作业

发布于: 2020 年 12 月 13 日

分析如下 HiveQL,生成的 MapReduce 执行程序,map 函数输入是什么?输出是什么,reduce 函数输入是什么?输出是什么?

INSERT OVERWRITE TABLE pv_users

SELECT pv.pageid, u.age

FROM page_view pv

JOIN user u

ON (pv.userid = u.userid);

Map

输入:就是两个表中一行一行的数据,两个 map 操作,分别处理两个表中的数据,分别得到两个输出

输出:

  • page_view 的 map 操作,得到的输出是,以 userid 为 key,userid 为 value 的对应关系

  • user 的 map 操作,得到的输出是,以 userid 为 key,age 为 value 的对应关系

  • 为了将两个表的数据关联起来,所以要选择两个表的共有字段作为两个 map 操作的输出结果的 key,也就是题目中 SQL 语句中 ON 操作所用的字段 userid

  • 由于两个 map 操作的结果中,都是以 userid 作为 key,那怎么讲两个 map 操作的 value 对应起来呢?怎么知道哪个 value 结果是哪个表产生的?这就需要在两个 map 的操作结果里,在 value 中多加一个信息,就是表的唯一标识(比如表名)。结果,

  • page_view 的 map 结果就是:

  • 111 -> <1, 1>

  • 111 -> <1, 2>

  • 222 -> <1, 1>

  • user 的 map 结果就是:

  • 111 -> <2, 25>

  • 222 -> <2, 32>

Reduce

输入:就是上面两个 map 的输出结果

输出:

1->25

2->25

1->32

发布于: 2020 年 12 月 13 日阅读数: 16
用户头像

还未添加个人签名 2018.07.26 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第十二周命题作业