hadoop map join 思路 待补充


.map端join
适用场景:小表可以全部读取放到内存中。两个在内存中装不下的大表,不适合map端join。

 

联想于:炊事班先做好饭放路边,急行军到了边拿馒头边吃 map端的小表就是馒头, map过来的每条记录就是急行军的每个人来拿馒头,这样就把业务做完了此时reduce端就没用作用了

 

 


在一个TaskTracker中可以运行多个map任务。每个map任务是一个java进程,如果每个map从HDFS中读取相同的小表内容,就有些浪费了。
使用DistributedCache,小表内容可以加载在TaskTracker的linux磁盘上。每个map运行时只需要从linux磁盘加载数据就行了,不必每次从HDFS加载。

问:如何使用DistributedCache哪?
答:1.把文件上传到HDFS中
    2.在job.waitForCompletion(...)代码之前写DistributedCache.addCacheFile(hdfs路径, conf);
    3.在MyMapper类的setup(...)方法中使用DistributedCache.getLocalCacheFiles()获得文件的路径,读取文件内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值