如果我使用 -files 命令行选项,如何在映射器中获取分布缓存文件



我使用命令从远程机器(窗口)运行Hadoop映射红色作业

java -jar XMLDriver.jar -files junkwords.txt -libjars XMLInputFormat.jar

并将作业提交到运行Hadoop的Linux盒子。

我知道这个分发缓存文件将被发送到我的远程盒子上的HDFS(我是否正确????

但是在映射器代码中,我无法使用 api 检索此文件名

Path[] cacheFiles  = DistributedCache.getLocalCacheFiles(conf); 
fileName = cacheFiles[0].toString();

我应该使用DistributedCache.addCacheFile() api 和符号链接 api,如果是这样,我需要提到的参数 URI 是什么,因为我不知道 linux 盒子上的 hadoop会在哪里复制文件?

另外,我尝试手动将junkwords.txt文件复制到hdfs,并在命令行中将hdfs路径指定为

java -jar XMLDriver.jar -files /users/junkwords.txt -libjars XMLInputFormat.jar

当我在本地 Windows 计算机上运行作业时,这会引发FileNotFoundException

使用 -file 命令行选项从远程计算机传递时访问映射器中的分布式缓存文件的解决方案是什么?

DistributedCache.addCacheFile()

在设置作业时,确实应将文件添加到分布式缓存中。

相关内容

  • 没有找到相关文章

最新更新