1、数据倾斜原因
如果是多张表的操作都是在reduce阶段完成,reduce端的处理压力太大,map节点的运算负载则很低,资源利用率不高,且在reduce阶段极易产生数据倾斜。
2、实操案例:
数据倾斜案例续写
3、解决方案
在map端缓存多张表,提前处理业务逻辑,这样增加map端业务,减少reduce端数据的压力,尽可能的减少数据倾斜。
4、具体办法:采用distributedcache
(1)在mapper的setup阶段,将文件读取到缓存集合中
(2)在驱动函数中加载缓存。
// 缓存普通文件到task运行
job.addCacheFile(new URI("file:/e:/mapjoincache/pd.txt"));节点
5、实操案例
distributedcache案例续写..