写点什么

十二、数据应用 (一)

用户头像
Geek_28b526
关注
发布于: 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 表结构与数据示例如下

page_view

pageid userid time

1 111 9:08:01

2 111 9:08:13

1 222 9:08:14

user

userid age gender

111 25 female

222 32 male


执行过程如下图所示

因为两张表要通过 userid 字段将对应的 pageid 和 age 字段进行合并,可以确定 map 输出的 key 一定是 userid, 只有 userid 作为 key,才能够把两张表的数据交给一个 reduce 进行关联处理。

map 输入, 两张表的每行记录。

map 输出, 两张表 map 输出 key 都是 userid, 只是 value 值不同, 第一张表 value 要包含表名和 pageid 字段, 第二张表 value 要包含表名和 age 字段。

reduce 输入, map 的输出数据经过 shuffle sort 处理, 将相同的 key 交给一个 reduce 进行关联处理。

reduce 输出, 相同的 key 有了 2 张表的数据, 那么可以进行组合输出 pageid 字段和 age 字段即可完成两张表的 join 操作。


用户头像

Geek_28b526

关注

还未添加个人签名 2020.02.26 加入

还未添加个人简介

评论

发布
暂无评论
十二、数据应用(一)