map端join算法实现
1、原理阐述
适用于关联表中有小表的情形;
可以将小表分发到所有的map节点,这样,map节点就可以在本地对自己所读到的大表数据进行join并输出最终结果,可以大大提高join操作的并发度,加快处理速度
2、实现示例
–先在mapper类中预先定义好小表,进行join
–引入实际场景中的解决方案:一次加载数据库或者用
资源文件
orders.txt---->放在本地电脑中
pdts.txt---->放在集群上
orders.txt
- 1001,20150710,p0001,2
- 1002,20150710,p0002,3
- 1002,20150710,p0003,3
pdts.txt
- p0001,xiaomi,1000,2
- p0002,appale,1000,3
- p0003,samsung,1000,4
第一步:定义mapJoin
public class MapJoinMap extends Mapper<LongWritable, Text,Text,Text> {
HashMap<String,String>map=new HashMap<>();
String line=null;
//用于程序的初始化
@Override
protected void setup(Context context) throws IOException, InterruptedException {
//获取缓存下来的数据
URI[] cacheFiles = DistributedCache.getCacheFiles(context.getConfiguration