Week_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);
答:pv表和user表,都有字段userid。题目的意思是将两张表中userid相同的行进行关联,输出用户关心的pageid和相应的age信息。
在进行MapReduce计算时,key必定是userid,因为数据关联条件是以userid进行判断的。所有map函数的输入Key是userid,相应的Value有两种,一种pv表中的pageid;另一种是user表中的age。为了让mapreduce计算过程相统一,将表信息加入value字段,以向量的方式作为map的value,因此Map的输入对应的Value是<表信息,pageid>或者<表信息,age>。
Map阶段计算完毕后,进行shuffle sort,Map的输出Key为userid,Value是<表信息,pageid>或者<表信息,age>,reduce过程的的输入是以shuffle sort后的数据作为输入,此时输入Key为userid,Value为<表信息,pageid>或者<表信息,age>,输出Value为<pageid,age>
评论