读者QQ群②:190771709,投稿请发dashuju36@qq.com
我要投稿

MapReduce 初级案例——多表关联

1

作者:虾皮

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

1 实例描述

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

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

11

样例输出如下所示。

1

2 设计思路

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

3 程序代码

程序代码如下所示:

1 1111111

4 代码结果

1)准备测试数据

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

1

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

1

2)查看运行结果

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

1

End.

转载请注明来自36大数据(36dsj.com):36大数据 » MapReduce 初级案例——多表关联

36大数据   除非特别注明,本站所有文章均不代表本站观点。报道中出现的商标属于其合法持有人。请遵守理性,宽容,换位思考的原则。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址