mapreduce join总结(多对多内连接,左外连接,右外连接,全连接)

在reduce端做join,以TextPair做key,TextPair.getSecond为源文件类型区分,reduce端提取出来赋值给变量bz

 

a join b

//a放进内存list
while(hasNext())
 if bz=0
 list.add()
 else 

{
 for clist :list
  write  clist next 

}


a left outer join b

int count=0;
//a放进内存list
while(hasNext())
 if bz=0
 list.add()
 else 

{
count++; //记录该key在b表的记录数
 for clist :list
  write  clist next 

}

if count==0  //如果b表没有记录,则输出null
for clist :list
 write clist null





//b放进内存list的写法

while(hasNext())
 if bz=0
 list.add()                   //b表的bz=0,b表放进list内存
 else 

{
 if list.size==0                 //如果b表没有对应该key的记录,则输出null
write next null
else                              //有则循环输出
for clist:list
 write next clist

}


a full outer join b

int count=0;
//a放进内存list
while(hasNext())
 if bz==0
 list.add()
 else 

{
count++; //记录该key在b表的记录数

if list.size==0  //如果a表没有记录
 write null next
else 
 for clist :list
  write  clist next 

}

if count==0  //如果b表没有记录,则输出null
for clist :list
 write clist null


a right outer join b

int count=0;
//a放进内存list
while(hasNext())
 if bz=0
 list.add()
 else 

{
count++; //记录该key在b表的记录数

if list.size==0
write null next
else
 for clist :list
  write  clist next 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值