写点什么

架构师训练营 week12 课后作业

用户头像
花果山
关注
发布于: 2021 年 01 月 10 日

作业一:

(至少完成一个)

  • 在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值?

  • 分析如下 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);

page_view 表和 user 表结构与数据示例如下



解答:

该 HiveQL 语句是查询所有<pageid, age>的组合,而这两个信息分属不同的表,将这两者连接在一起的是 userid。

map 函数输入的是两张表的每行数据,假设 page_view 为表 1,user 为表 2。

既然要处理两个表的数据,那么会有两个 Map()函数,

第一个 Map()函数统计 page_view 表。它的输入<key, value>中 value 是 page_view 的数据记录,输出的<key, value>中,key 是 userid,value 是表名和 pageid 的组合;

第二个 Map()函数统计 user 表。它的输入<key, value>中 value 是表记录,输出<key, value>中 key 是 userid,value 是表名和 age 的组合。

用 userid 做为 Map()函数输出<key, value>中的 key 是一个关键信息,因为在 Shuffle 过程中需要用 userid 来将 Map()的输出数据分类组合,然后传给 Reduce()函数中。Reduce()函数的输入<key, values>中 key 是 userid,values 是来自于表 1 的 pageid 或者是来自于表 2 的 age。Reduce()函数将这些信息整合,得到的输出<key, value>中 value 就是所有 pageid 和 age 的组合,也就是 HiveQL 查询想要得到的结果。至此,MapReduce 过程结束,实现了 HiveQL 的查询结果。


过程如下:


发布于: 2021 年 01 月 10 日阅读数: 15
用户头像

花果山

关注

还未添加个人签名 2019.05.09 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 week12 课后作业