🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1. 使用场景:一张表十分小、一张表很大。 2. 解决方案 在map端缓存多张表,提前处理业务逻辑,这样增加map端业务,减少reduce端数据的压力,尽可能的减少数据倾斜。 3. 具体办法:采用 distributedcache (1)在驱动类中加载缓存。 `job.addCacheFile(new URI("../customers.csv"));// 缓存普通文件到 task 运行节点` (2)在 Mapper 类的 setup 阶段,将文件读取到缓存集合中。 ➢ 获取缓存的文件 ➢ 循环读取缓存文件一行 ➢ 按指定分割符切割 ➢ 缓存数据到集合(Map) ➢ 关流 (3)map 方法中 ➢ 获取一行 ➢ 按指定分割符 ➢ 获取订单文件中的商品 id ➢ 使用商品 id 作为 Key 从 Map 集合中获取商品名称 ➢ 拼接