我已经阅读了来自 Apache 和 Yahoo 的 DistributedCache 教程。我仍然对一件事感到困惑。假设我有一个要复制到所有数据节点的文件。所以,我
DistributedCache.addCacheFile(new URI(hdfsPath),job)
在工作驱动程序中使用以使文件可用。然后,我DistributedCache.getLocalCacheFiles(job)
在我的 Mapper 中调用。
现在,我想根据这个文件的内容在数据节点上创建一个数组,这样每次 map() 运行时,它就可以访问数组的元素。我可以这样做吗?我很困惑,因为如果我读取缓存文件并在 Mapper 类中创建数组,它似乎会为 Mapper 的每个新输入创建数组,而不是每个 Mapper 一次。这部分实际上是如何工作的(即,我应该在哪里/何时创建数组)?