一、概述
Join: 将两个中的字段,通过公共字段进行关联!
MR :
- 在Reduce端Join
- 保证两个文件中的所有字段,都必须达到Reduce!需要将两个文件的所有字段封装为一个Bean
- 在Map端,为每个文件,打上标记
- 弊端:如果数据量大,reduce端处理过程耗时,容易出现数据倾斜!
- 在Map端Join
- 将大文件,作为输入文件,通过输入格式读入到MapTask
- 小文件,使用分布式缓存,在进入Mapper时,提前从缓存中读取小文件中的内容,这样增加Map端业务,减少Reduce端数据的压力,尽可能的减少数据倾斜。
- 缓存文件: job.addCacheFile()
- 读取缓存: jod.getCacheFiles()