12 周架构
大数据概要总结
分析如下 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 表结构与数据示例如下
map 函数输入: page_view pv ;user u 输出:userid,pageid; userid,age
reduce 函数输入:userid,pageid; userid,age 输出:pageid,age
说明
第一个 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 是来自于表 pv 的 pageid 或者是来自于表 u 的 age。Reduce()函数将这些信息整合,得到的输出<key, value>中 value 就是所有 pageid 和 age 的组合。至此,MapReduce 过程结束,实现了 HiveQL 的查询结果。
评论