如何将其他数据传递给Mapper?

时间:2016-02-21 03:31:33

标签: java hadoop mapreduce knn

由于某些数据在所有map()函数之间共享,我无法在setup()中生成它们,因为每个setup()对应于每个map()函数,并且我想要做的是预先生成一些数据并将其存储在可实现的地方,然后在每个map()中使用它。

我怎么可能这样做?假设我正在使用Mapreduce进行KNN,并且我想使用每个map()的所有测试数据。我应该在哪里存储这些测试数据,然后在映射器中使用它们?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以将预先计算的数据存储到HDFS中,然后将其包含在Job的DitributedCache中。

https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/filecache/DistributedCache.html

在与作业相关的任务开始之前,DistributedCache中的所有文件(数据,库等)都将被复制到每个节点。

分布式缓存不仅限于HDFS中的文件,而是需要从需要它的每个节点获得数据(如HDFS所示)。