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

Java 如何对所有映射器使用相同的数据?,java,hadoop,machine-learning,random-forest,Java,Hadoop,Machine Learning,Random Forest,正如我们所知,映射器的数量是由数据分割定义的,如果我想用MapReduce实现一个随机森林算法,其中每个映射器需要所有数据,那么问题就来了。在这种情况下我该怎么办?我们可以为不同的制图者“重用”数据吗 setNumMapTasks能工作吗?我对这个函数感到非常困惑,我几乎找不到任何关于它如何与由数据拆分数量决定的映射器自然数量相对应的信息 非常感谢。侧数据是所有地图绘制者共享的数据。作为作业设置的一部分,您需要将数据广播到映射器 这是通过分布式缓存实现的 下面是一些代码起点。首先通过作业类将要共

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

setNumMapTasks
能工作吗?我对这个函数感到非常困惑,我几乎找不到任何关于它如何与由数据拆分数量决定的映射器自然数量相对应的信息


非常感谢。

侧数据是所有地图绘制者共享的数据。作为作业设置的一部分,您需要将数据广播到映射器

这是通过分布式缓存实现的

下面是一些代码起点。首先通过
作业
类将要共享的文件放置在DistributedCache中:

        job.addCacheFile(new URI("<your file location>"));
job.addCacheFile(新URI(“”);
在mapper/reducer中,您可以通过普通文件系统api访问文件:

File file = new File("<my file name>");            
File文件=新文件(“”);

如果构建随机林,为什么每个映射器都需要所有数据?首先将数据打包到不同的文件中,然后让每个映射者为森林构建一个决策树。