MapReduce 初级案例——多表关联

MapReduce 初级案例——多表关联

作者:虾皮

多表关联和单表关联类似,它也是通过对原始数据进行一定的处理,从其中挖掘出关心的信息,下面进入一个实例。

1 实例描述

输入是两个文件,一个代表工厂表,包含工厂名列和地址编号列;另一个代表地址表,含ctoryname addressed的信息。

包含地址名列和地址编号列。要求从输入数据中找出工厂名和地址名的对应关系,输出“ 工厂名——地址名”表。样例输入如下所示。

MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联

样例输出如下所示。

MapReduce 初级案例——多表关联

2 设计思路

多表关联和单表关联相似,都类似于数据库中的自然连接。相比单表关联,多表关联的左右表和连接列更加清楚。所以可以采用和单表关联的相同的处理方式,map识别出输入的行属于哪个表之后,对其进行分割,将连接的列值保存在key中,另一列和左右表标识保存在value中,然后输出。reduce拿到连接结果之后,解析value内容,根据标志将左右表内容分开存放,然后求笛卡尔积,最后直接输出。这个实例的具体分析参考单表关联实例。下面给出代码。

3 程序代码

程序代码如下所示:

MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联 MapReduce 初级案例——多表关联

4 代码结果

1)准备测试数据

通过 Eclipse 下面的 “ DFS Locations”在“ /user/hadoop”目录下创建输入文件“ MTjoin_in”文件夹( 备注:“ MTjoin_out”不需要创建。)如图 5.4-1 所示,已经成功创建。

MapReduce 初级案例——多表关联

然后在本地建立两个 txt 文件,通过 Eclipse 上传到“ /user/hadoop/MTjoin_in”文件夹中,两个 txt 文件的内容如“实例描述”那两个文件一样。如图 5.4-2 所示,成功上传之后。从 SecureCRT 远处查看“ Master.Hadoop”的也能证实我们上传的两个文件。

MapReduce 初级案例——多表关联

2)查看运行结果

这时我们右击 Eclipse 的“ DFS Locations”中“ /user/hadoop”文件夹进行刷新,这时会发现多出一个“ MTjoin_out”文件夹,且里面有 3 个文件,然后打开双其“ part-r-00000”文件,会在 Eclipse 中间把内容显示出来。如图 5.4-4 所示。

MapReduce 初级案例——多表关联

End.

随意打赏

mapreduce案例mapreduce
提交建议
微信扫一扫,分享给好友吧。