写点什么

MapReduce 函数分析

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



通过观察看出 2 张表是通过 userid 进行关联的,所以 map 的输出是以 userid 为 key。

 

Page_view 表

Map 函数输入:

map(key:offset, value:line_ of_page_view)

l  key 是 value 所在行的偏移量。

l  value 是 page_view 表中一行的文本内容。

 

Map 函数输出:

l  Key:userid 值。

l  Value:是键值对,键是表编号,值是 pageid。

       Key:111 value:{1:1}

       Key:111 value:{1:2}

       Key:222 value: {1:1}

 

User 表输入

Map 函数输入:

map(key:offset, value:line_of_user)

l  key 是 value 所在行的偏移量。

l  value 是 user 表中一行的文本内容。

 

Map 函数输出:

l  Key:userid 值。

l  Value:是键值对,键是表编号,值是 age。

       Key:111 value: {2:25}

       Key:222 value: {2:32}

 

Shuffle

Shuffle 会将上述 2 个 map 函数输出内容按照 key:userid 排序,输出如下内容交给 Reduce 服务。

{111: {1:1}}

{111: {1:2}}

{111: {2:25}}

{222: {1:1}}

{222: {2:32}

 

Reduce

Reduce 服务将 shuffle 输出数据作为输入,从 values 过滤出 age 和 pageid 数据。

Key:pageid value:age

1,25

2,25

1,32


发布于: 2021 年 01 月 10 日阅读数: 21
用户头像

Mars

关注

还未添加个人签名 2018.06.12 加入

还未添加个人简介

评论

发布
暂无评论
MapReduce函数分析