MapReduce 分布式缓存 map Side Join

本文介绍了MapSide Join的概念,它在Map阶段执行Join操作,省去了Reduce阶段,利用MapReduce的分布式缓存提高效率。详细讲解了分布式缓存的使用,包括在YARN模式下运行MapReduce的条件,以及如何读取和存储缓存文件,通过Mapper的setup方法实现数据的join操作。最后,阐述了驱动类代码的编写和在Yarn上运行MapReduce作业的步骤。
摘要由CSDN通过智能技术生成

MapReduce 分布式缓存


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、Map Side join

map Side Join 就是在 map阶段执行join关联操作,并且程序也没有了reduce阶段。避免了 shuffle时候的繁琐。 实现的的关键是使用MapReduce的分布式缓存。

二、分布式缓存

1.概念

分布式缓存的使用必须使用MapReduce的yarn模式运行。
join要处理的数据集,使用分布式缓存将小数据或者基本固定不变的数据或者文档进行分布式缓存。
在mapReduce的框架下,会自动将缓存的数据分发到各个maptast。
程序只会在mapper阶段将 缓存的文件或数据集读取出来,然后和自己读取的数据进行join关联 最后输出结果。

2.代码实现

代码如下(示例):

1.重写Mapper的初始化方法 setup(),读取缓存文件。
2.缓存文件是以流的形式进行读取。
3.将读取的数据存储在 集合当中。
4.将读取的数据与自己读取的文件进行join合并操作。
5.直接输出。

public class MapJoinMapper extends Mapper<LongWritable, Text, Text, NullWritable> {
   

    Text keyOut = new Text();
    Map<String,String> map = new HashMap<>();
    @Override
    protected void setup(Mapper<LongWritable, Text, Text, NullWritable>.Context context) throws IOException, InterruptedException {
   

        //读取文件

        BufferedReader br = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值