架构师训练营 1 期第 12 周:数据应用(一) - 作业
1. 作业1:在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值?
略
2. 作业2:分析如下 HiveQL,生成的 MapReduce 执行程序,map 函数输入是什么?输出是什么,reduce 函数输入是什么?输出是什么?
page_view 表和 user 表结构与数据示例如下
2.1 分析
首先分析给出的两个表page_view
和 user
。可以看出这两张表通过userid
来进行关联。所以Map
的输出可以知道是以userid
为key
。
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
中过滤出age
和pageid
两个数组,再进行结合操作
<pageid, age>
1, 32
1, 25
2, 25
版权声明: 本文为 InfoQ 作者【灵霄】的原创文章。
原文链接:【http://xie.infoq.cn/article/d88189106b7e92098c4315269】。未经作者许可,禁止转载。
评论