由于有时候reduce value值数量的不确定性可能会造成数据倾斜,可以考虑使用分布式缓存机制,仅用map进行输出。
mapreduce中具体的函数为
job.addCacheFile(new URI("file:///Users/inequality/tmp/input/join/pro.txt"));
此函数可以在map运行之前在工作目录加入缓存文件,供map使用
具体程序代码:实现采购信息和商品信息的map端合并
采购表
1001,20150710,1,2
1002,20100910,1,3
1002,20120912,2,3
商品信息
1,xiaomi
2,chuizi
运行结果
1001,20150710,1,2 mi6
1002,20100910,1,3 mi6
1002,20120912,2,3 chuizi
public class MapJoin {
static class MapJoinMapper extends Mapper<LongWritable, Text, Text, NullWritable> {