其他分享
首页 > 其他分享> > Hadoop——MapJoin(减少数据倾斜)

Hadoop——MapJoin(减少数据倾斜)

作者:互联网

首先,先说一下当前了解到的一个适用MapJoin的场景吧:

比如我们此时手中有两个表需要我们进行处理,但是呢一个很大,一个很小。那么这个时候我们比较适合使用MapJoin进行处理。

那么我们具体是怎么实现MapJoin的这个操作的呢?:

我们可以在map端对小的那个表先进行缓存,提前在map端将数据进行处理,那么这么做有什么好处呢,我们可以减少reduce端的压力、加快数据传输的速度、尽可能的减少reduce端出现数据倾斜(暂时个人理解为:因为每个map端的大小是可以设置的默认是128M,在map端进行处理应该不会因为某一个键特别多导致数据倾斜的发生,而且每个mapTask都是并行的。呃……没得到确认暂时先这么理解,有问题会修改。)

具体实现:
在map的setup阶段对小的文件进行缓存到:
当然在驱动类之中还需要加上job.addCacheFile(new URI(“file:///D:/Hadoop/11_input/tablecache/pd.txt”));
在这里插入图片描述
小表样例:
在这里插入图片描述

然后在map阶段将大表的文件进行读取,按照需求将大表中的数据和从HashMap中提取出的数据合并输出。

在这里插入图片描述

标签:map,倾斜,reduce,Hadoop,MapJoin,数据,进行
来源: https://blog.csdn.net/d_l_w_d_l_w/article/details/120162895