架构师训练营 第十二周 课后练习

用户头像
且听且吟
关注
发布于: 2020 年 09 月 02 日

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

两张表结构如下:

表结构与数据示例



map函数

void map(K1 key, V1 value, OutputCollector<K2, V2> output, Reporter reporter) throws IOException;



输入

key:文件的偏移量

value:page_view或者user的行记录文本值



输出

其中key是userid,value则根据来源不同取不同的形式:来源于表page_view的记录,value的值为"pv#"+age+gender;来源于表user的记录,value的值为"u#"+pageid+time



reduce函数

void reduce(K2 key, Iterator<V2> values,OutputCollector<K3, V3> output, Reporter reporter) throws IOException;



输入

其中key是userid,value为shuffle后的数据列表,如userid为111的,value为u#1 9:08:01 、u#2 9:08:13 、pv#25 female组成的数据列表;



输出

通过遍历key以及value-list,输出pageid和age组成的列表。



具体过程参考以下图:

MapReduce过程



发布于: 2020 年 09 月 02 日 阅读数: 34
用户头像

且听且吟

关注

没有绝世高手 2018.06.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 第十二周 课后练习