架构师训练营 第十二周 课后练习
分析如下HiveQL,生成的MapReduce执行程序,map函数输入是什么?输出是什么,reduce函数输入是什么?输出是什么?
两张表结构如下:

表结构与数据示例
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过程
版权声明: 本文为 InfoQ 作者【且听且吟】的原创文章。
原文链接:【http://xie.infoq.cn/article/e850eddbbe600c2cacc6bce49】。未经作者许可,禁止转载。
评论