As 获取本地缓存文件() http://hadoop.apache.org/docs/r2.3.0/api/org/apache/hadoop/mapreduce/JobContext.html#getLocalCacheFiles()已被弃用,我正在尝试寻找替代方案。获取缓存文件() http://hadoop.apache.org/docs/r2.3.0/api/org/apache/hadoop/mapreduce/JobContext.html#getCacheFiles()似乎是一个,但我怀疑它们是否相同。
你打电话时添加缓存文件() https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduce/Job.html#addCacheFile(java.net.URI),HDFS中的文件将被下载到每个节点并使用getLocalCacheFiles()
你可以得到本地化的文件路径,您可以从本地文件系统读取它。然而,什么getCacheFiles()
返回的是 HDFS 中文件的 URI。如果您通过此 URI 读取文件,我怀疑您仍然从 HDFS 而不是本地文件系统读取。
以上是我的理解,不知道是否正确。如果是这样,有什么替代方案getLocalCacheFiles()
?为什么 Hadoop 首先不赞成它?
它是开源的。你总能找到引入了@Deprectated
: 犯罪735b50e8bd23f7fbeff3a08cf8f3fff8cbff7449 https://github.com/apache/hadoop/commit/735b50e8bd23f7fbeff3a08cf8f3fff8cbff7449,这是为了MAPREDUCE-4493 https://issues.apache.org/jira/browse/MAPREDUCE-4493。在 JIRA 的末尾,您会发现以下讨论:
Omkar Vinit Joshi 添加了一条评论 - 13/7/13 00:18
Robert Joseph Evans 如果我们弃用 getLocalCacheFiles 和 getCacheFiles
jobContext() 那么用户将如何获取本地缓存文件
地图任务? YARN-916 是相关问题..谢谢。
罗伯特·约瑟夫·埃文斯添加了一条评论 - 2013年7月19日 15:27
奥姆卡·维尼特·乔希通过打开当前工作目录中的符号链接。在 YARN 之前
默认行为是不在当前工作中创建符号链接
指向分布式缓存中的项目的目录。如果你
您必须专门打开该选项并提供想要的链接
您想要的符号链接的名称。获取文件的唯一方法
没有符号链接的是调用 getLocalCacheFiles 和 getCacheFiles。在
YARN 的所有文件都会创建一个符号链接。的名称
文件/目录将是符号链接的名称。然而,它是
我想要的地方可能发生名称冲突 hdfs://foo/bar.zip
和 hdfs://bar/bar.zip。在 1.0 中,这两个都是
通过已弃用的 API 下载和访问,但在 YARN 中
将输出警告,并且仅下载其中之一。还
由于这些 API 的编写方式,映射器代码可能不会
知道只下载了其中之一,将无法找到
失踪的那一个然后爆炸。这就是为什么我反对它们而赞成
鼓励人们总是使用符号链接,这样行为就总是
持续的。
Omkar Vinit Joshi 添加了一条评论 - 2013 年 7 月 19 日 16:56
罗伯特·约瑟夫·埃文斯听起来不错……但是我们将把
基于文件名的限制..但这听起来合理考虑到
事实上,这将阻止地图代码中的潜在错误,并且用户可以
一定要对它们进行版本控制以避免它......谢谢......
所以你应该只打开该文件,它就会在那里。没有专用 API。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)