如何将其他数据传递给Map器?

y1aodyip  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(335)

因为有些数据是在所有 map() 函数,我无法在setup()中生成它们,因为 setup() 对应于每个 map() 函数,我想做的是预生成一些数据并将其存储在可以实现的地方,然后在每个函数中使用它 map() .
我怎么可能做到呢?假设我用mapreduce做knn,我想每个人都使用所有的测试数据 map() . 我应该在哪里存储这些测试数据,然后在Map器中使用它们?
非常感谢。

h5qlskok

h5qlskok1#

您可以将预先计算的数据存储到hdfs中,然后将其包含在作业的ditributedcache中。
https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/filecache/distributedcache.html
distributedcache中的所有文件(数据、库等)将在每个节点上启动与作业相关的任务之前复制到该节点。
分布式缓存并不局限于hdfs中的文件,而是需要从每个需要它的节点获得数据(就像hdfs一样)。

相关问题