在数据库中我们经常会遇到一些业务场景需要将多个表进行join实现某些特定的业务逻辑,在MapReduce中也可以实现join,这个join功能可以是在map端也可以是在reduce端。下面的案例中我们会以reduce端的join为例实现该功能。
需求:
有两个表,一个表是员工表(eid,name,deptid),另一个表是部门表(deptid,dept),想要实现的功能是经过reduce之后最后输出的是一个将员工表中的deptid替换为部门表中的dept的一个表(eid,name,dept),连个表之间通过deptid进行join。
- 数据准备
[root@hadoop301 testdata]# cat employee.txt
001,Tina,d03
002,Sherry,d01
003,Bob,d01
004,Sam,d02
005,Mohan,d01
006,Tom,d03
[root@hadoop301 testdata]# cat dept.txt
d01,marketing
d02,financial
d03,production
上传至HDFS:
[root@hadoop301 testdata]# hdfs dfs -mkdir /testreducejoin
[root@hadoop301 testdata]# hdfs dfs -put employee.txt /testreducejoin
[root@hadoop301 testdata]# hdfs dfs -put dept.txt /testreducejoin