现在的位置: 首页 > 综合 > 正文

map端join

2018年05月20日 ⁄ 综合 ⁄ 共 402字 ⁄ 字号 评论关闭

适用场景:小表可以全部读取放到内存中。两个在内存中装不下的大表,不适合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()获得文件的路径,读取文件内容

【上篇】
【下篇】

抱歉!评论已关闭.