如何与所有映射器使用相同的数据?

时间:2016-03-03 07:24:30

标签: java hadoop machine-learning random-forest

正如我们所知,mapper的数量是由数据拆分定义的,如果我想用MapReduce实现随机森林算法,那么问题就来了,每个映射器需要所有数据。在这种情况下我该怎么办?我们可以“重用”不同映射器的数据吗?

setNumMapTasks可以运作吗?我对这个函数感到很困惑,我几乎找不到任何关于它如何与数据拆分数决定的自然数量的映射器相关的信息。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

Side data是所有映射器共享的数据。作为作业设置的一部分,您需要将数据广播到映射器。

这是通过DistributedCache https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/filecache/DistributedCache.html完成的。

这里有一些代码起点。首先通过Job类在

        job.addCacheFile(new URI("<your file location>"));

在mapper / reducer中,您可以通过普通的FileSystem api访问该文件:

File file = new File("<my file name>");