因为有些数据是在所有 map() 函数,我无法在setup()中生成它们,因为 setup() 对应于每个 map() 函数,我想做的是预生成一些数据并将其存储在可以实现的地方,然后在每个函数中使用它 map() .我怎么可能做到呢?假设我用mapreduce做knn,我想每个人都使用所有的测试数据 map() . 我应该在哪里存储这些测试数据,然后在Map器中使用它们?非常感谢。
map()
setup()
h5qlskok1#
您可以将预先计算的数据存储到hdfs中,然后将其包含在作业的ditributedcache中。https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/filecache/distributedcache.htmldistributedcache中的所有文件(数据、库等)将在每个节点上启动与作业相关的任务之前复制到该节点。分布式缓存并不局限于hdfs中的文件,而是需要从每个需要它的节点获得数据(就像hdfs一样)。
1条答案
按热度按时间h5qlskok1#
您可以将预先计算的数据存储到hdfs中,然后将其包含在作业的ditributedcache中。
https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/filecache/distributedcache.html
distributedcache中的所有文件(数据、库等)将在每个节点上启动与作业相关的任务之前复制到该节点。
分布式缓存并不局限于hdfs中的文件,而是需要从每个需要它的节点获得数据(就像hdfs一样)。