架构师训练营 1 期第 12 周:数据应用(一) - 作业

用户头像
灵霄
关注
发布于: 2020 年 12 月 30 日
架构师训练营 1 期第 12 周:数据应用(一) - 作业

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

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



NSERT OVERWRITE TABLE pv_users
SELECT pv.pageid, u.age
FROM page_view pv
JOIN user u
ON (pv.userid = u.userid);

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



2.1 分析

首先分析给出的两个表page_view 和 user。可以看出这两张表通过userid来进行关联。所以Map的输出可以知道是以useridkey

Map

page_view表



Map函数输入:



  • map(key: Offset, value: line_of_page_view, ...)

  • key 是 value 所在行的偏移量

  • value 是 page_view 表中某一行的文本内容



Map函数输出:



  • key 就是 userid 的值

  • value 是一个键值对,键是表编号, 值就是 pageid

  • key: 111, {page_view: 1}

  • key: 111, {page_view: 2}

  • key: 222, {page_view: 1}



user表



Map函数输入:



  • map(key: Offset, value: line_of_user, ...)

  • key 是 value 所在行的偏移量

  • value 是 user 表中某一行的文本内容



Map函数输出:



  • key 就是 userid 的值

  • value 是一个键值对,键是表编号, 值就是 pageid

  • key: 111, {user: 25}

  • key: 111, {user: 32}



Shuffle

Shuffle 会将上述 两个Map函数的输出结构按 Key 值(userid)排序以及合并,会生成如下内容再交给不同的 Reduce 服务计算:



  • {111: {user:25}}

  • {111: {page_view:1}}

  • {111: {page_view:2}}

  • {222: {user:32}}

  • {222: {page_view:1}}



Reduce

Reduce的输入就是以上shuffle的输出



Reduce的输出则是在不同表格的基础上,从values中过滤出agepageid两个数组,再进行结合操作



  • <pageid, age>

  • 1, 32

  • 1, 25

  • 2, 25



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

灵霄

关注

还未添加个人签名 2019.02.13 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 1 期第 12 周:数据应用(一) - 作业