java - 如何将附加数据传递给 Mapper?

标签 java hadoop mapreduce knn

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

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

非常感谢。

最佳答案

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

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

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

分布式缓存不限于 HDFS 中的文件,但数据需要从需要它的每个节点(就像 HDFS 一样)可用。

关于java - 如何将附加数据传递给 Mapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531955/

相关文章:

ubuntu - 总是遇到 “Ambari Server not running, Stale PID File at:/var/run/ambari-server/ambari-server.pid”

hadoop - 如何获取 Reducer 中 Mappers 输出的记录数

hadoop - Spark 无法再执行作业。执行者创建目录失败

java - org.springframework.beans.factory.BeanCreationException : Error How do I solve this?

hadoop - 重写 SemanticException [错误 10001]

java - 为什么 Java 中的 JWT token 无效或过期时,我的 CustomAuthenticationEntryPoint 开始方法没有被调用?

hadoop - MultiTableInputFormat比较2个表大约需要80分钟

sql-server - 使用 SQL Server 作为数据源的 MapReduce

java - 如何在 WebView Android Studio 中打开本地 pdf 文件

java - axios 加载数据的速度不够快