MapReduce单表连接

该博客详细介绍了MapReduce单表连接的原理和实验过程。通过买家好友数据文件buyer1,阐述如何使用MapReduce进行单表连接,查询用户的间接好友关系。实验包括Map端数据处理、 Reduce端数据聚合,最终在Hadoop上运行并查看结果。
摘要由CSDN通过智能技术生成

实验目的

1.准确理解MapReduce单表连接的设计原理

2.熟练掌握MapReduce单表连接程序的编写

3.了解单表连接的运用场景

4.学会编写MapReduce单表连接程序代码解决问题
实验原理

以本实验的buyer1(buyer_id,friends_id)表为例来阐述单表连接的实验原理。单表连接,连接的是左表的buyer_id列和右表的friends_id列,且左表和右表是同一个表。因此,在map阶段将读入数据分割成buyer_id和friends_id之后,会将buyer_id设置成key,friends_id设置成value,直接输出并将其作为左表;再将同一对buyer_id和friends_id中的friends_id设置成key,buyer_id设置成value进行输出,作为右表。为了区分输出中的左右表,需要在输出的value中再加上左右表的信息,比如在value的String最开始处加上字符1表示左表,加上字符2表示右表。这样在map的结果中就形成了左表和右表,然后在shuffle过程中完成连接。reduce接收到连接的结果,其中每个key的value-list就包含了"buyer_idfriends_id–friends_idbuyer_id"关系。取出每个key的value-list进行解析,将左表中的buyer_id放入一个数组,右表中的friends_id放入一个数组,然后对两个数组求笛卡尔积就是最后的结果了。
实验环境

Linux Ubuntu 14.04

jdk-7u75-linux-x64

hadoop-2.6.0-cdh5.4.5

hadoop-2.6.0-eclipse-cdh5.4.5.jar

eclipse-java-juno-SR2-linux-gtk-x86_64
实验内容

现有某电商的用户好友数据文件,名为 buyer1,buyer1中包含(buyer_id,friends_id)两个字段,内容是以"\t"分隔,编写MapReduce进行单表连接,查询出用户的间接好友关系。例如:10001的好友是10002,而10002的好友是10005,那么10001和10005就是间接好友关系。

buyer1(buyer_id,friends_id)
view plain "copy

10001   10002  
10002   10005  
10003   10002  
10004   10006  
10005   10007  
10006   10022  
10007   10032  
10009   10006  
10010   10005  
10011   10013  

统计结果数据如下:
view plain "copy

好友id  用户id  
10005   10001  
10005   10003  
10007   10010  
10007   10002  
10022   10004  
10022   10009  
10032   10005  

实验步骤

1.切换到/apps/hadoop/sbin目录下,开启hadoop。
view plain "copy

cd /apps/hadoop/sbin  
./start-all.sh  

2.在Linux本地新建/data/mapreduce7目录。
view plain "copy

mkdir -p /data/mapreduce7  

3.在Linux中切换到/data/mapreduce7目录下,用wget命令从http://10.51.46.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿的编程之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值