【发布时间】:2012-04-25 14:57:33
【问题描述】:
我已经阅读了来自 Apache 和 Yahoo 的关于 DistributedCache 的教程。我仍然对一件事感到困惑。假设我有一个想要复制到所有数据节点的文件。所以,我用
DistributedCache.addCacheFile(new URI(hdfsPath),job) 在工作驱动程序中使文件可用。然后,我在 Mapper 中调用 DistributedCache.getLocalCacheFiles(job)。
现在,我想根据这个文件的内容在数据节点上创建一个数组,这样每次 map() 运行时,它就可以访问数组的元素。我可以这样做吗?我很困惑,因为如果我读取缓存文件并在 Mapper 类中创建数组,它似乎会为 Mapper 的每个新输入创建数组,而不是每个 Mapper 一次。这部分实际上是如何工作的(即,我应该在哪里/何时创建数组)?
【问题讨论】:
-
我想我可能已经找到了自己问题的答案。看起来好像在实例化 Mapper 时会自动调用 configure() 方法。因此,应该使用 configure() 创建数组。这在 map() 方法之外,所以它只发生一次。我希望这是对的!
标签: hadoop mapreduce distributed-cache