map端join

适用场景:小表可以全部读取放到内存中。两个在内存中装不下的大表,不适合map端join。

在一个TaskTracker中可以运行多个map任务。每个map任务是一个java进程,如果每个map从HDFS中读取相同的小表内容,就有些浪费了。
使用DistributedCache,小表内容可以加载在TaskTracker的linux磁盘上。每个map运行时只需要从linux磁盘加载数据就行了,不必每次从HDFS加载。

如何使用DistributedCache?
    1.把文件上传到HDFS中
    2.在job.waitForCompletion(...)代码之前写DistributedCache.addCacheFile(hdfs路径, conf);
    3.在MyMapper类的setup(...)方法中使用DistributedCache.getLocalCacheFiles()获得文件的路径,读取文件内容


©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页