欢迎来到天天文库
浏览记录
ID:39970944
大小:340.00 KB
页数:9页
时间:2019-07-16
《mapreduce实例多表连接》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、mapreduce实例--多表连接实例描述输入是两个文件,一个为工厂表factory.txt,包含工厂名列factoryname和地址编号列addressID;另一个为地址表address.txt,包含地址编号列addressID和地址名列addressname。要求从输入数据中找出工厂名factoryname和地址名addressname的对应关系,输出“工厂名--地址名”表。实例描述输出表如下:设计思路多表关联和单表关联相似,都类似于数据库中的自然连接。相比单表关联,多表关联的左右表和连接列更加清楚。所以可以采用和单表关联的相同的处理方式,map识别出输入的行属于
2、哪个表之后,对其进行分割,将连接的列值保存在key中,另一列和左右表标识保存在value中,然后输出。reduce拿到连接结果之后,解析value内容,根据标志将左右表内容分开存放,然后求笛卡尔积,最后直接输出。左表map结果:mapkeyrelationtype+mapvalue11+BeijingRedStar31+ShenzhenThunder21+GuangzhouHonda11+BeijingRising21+GuangzhouDevelopmentBank31+Tencent11+BankofBeijing设计思路右表map结果:mapkeyrelatio
3、ntype+mapvalue12+Beijing22+Guangzhou32+Shenzhen42+Xian设计思路Reduce过程:Reduce进行左右表连接,mapkey相同且relationtype不同的那些mapvalue进行笛卡尔积。BeijingRedStar1BeijingShenzhenThunder3ShenzhenGuangzhouHonda2GuangzhouBeijingRising1BeijingGuangzhouDevelopmentBank2GuangzhouTencent3ShenzhenBankofBeijing1Beijing设计思
4、路代码结果1.准备测试数据通过Eclipse下面的"DFSLocations"在"/user/hadoop"目录下创建输入文件"input"文件夹(备注:"output"不需要创建。)。如图1,已成功创建。图1图2然后在本地建立两个txt文件factory.txt和address.txt,通过Eclipse上传到"/user/hadoop/input"文件夹中,两个txt文件的内容如"实例描述"那两个文件一样。如图2所示,已成功上传。2.查看运行结果运行后,我们右击Eclipse的"DFSLocations"中"/user/hadoop"文件夹进行刷新,这时会发现多出
5、一个"output"文件夹,里面有1个文件,然后打开看到如图3的运行结果。代码结果
此文档下载收益归作者所有