在上一个案例中我们使用的是reduce端的join实现了两个表之间的连接,但是reduce端join会使大量数据在传输过程中较多产生资源的消耗,同时也会造成数据倾斜。如果我们能将这些数据在map端进行处理,这样在数据传给reduce端的时候就会压力较小,并且此时reduce端不需要在进行特殊处理,所以我们就可以将reduceTask的个数设置为0。所以该案例中我们尝试将上一案例中的需求通过map端的join来实现一下,这次我们将在本地windows上运行代码。
map join的大致思路就是在mapper中初始化时将一张小表进行缓存,然后在map阶段用大表来对这个小表进行join,该案例中我们会将部门表进行缓存。在该案例中由于不需要reduce机型处理,所以我们不需要创建自定义Reducer;由于key只是用了其中一个字段(部门编号),所以也不需要使用多个属性定义Bean类。
- 准备数据
数据准备工作参考上一篇中的步骤。
新建project:
- 引入pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/