reduce 端的join

a表:
id name age
b表:
id course sex
a和b的join
select * form a join b on a.id = b.id

reduce 端的join就是join过程在reduce端做

伪代码
public class ReduceJoin{
	static class MyMapper extends Mapper<><><><>{
		@override
		protected void setup(){}
		//通过上下文对象,map方法之前读取到文件名
		@override
		protected void map(){}	
		//加标记,判断是从a来还是从b来,不同的文件相同的key输出map的格式不同
		@override
		protected void reduce(){
			if(lsit1.size>0&& list2.size>0){
			//两个集合都有数据才能关联上
			//双重for循环进行两个集合的拼接
			}
		}
		//把相同的key做关联
		//创建两个list,for循环做判断,如果标签a开头的加到list1,b开头的加到list2

	}

}

缺点:
1.容易发生数据倾斜
2.reduce本身并行度不高,性能不高(个数datanode*0.95)
3.reducejoin需要结合list,本身存在性能瓶颈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值