hadoop如果使用-files命令行选项,如何在mapper中获取分发缓存文件

5fjcxozz  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(266)

我使用以下命令从远程计算机(windows)运行hadoop map red作业

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

并将作业提交到运行hadoop的linux box。
我知道这个分发缓存文件将被发送到我的远程盒子上的hdfs(我说的对吗??)
但是在mapper代码中,我无法使用api检索这个文件名

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

fileName = cacheFiles[0].toString();

我应该用吗 DistributedCache.addCacheFile() api和symlinks api,如果是的话wht是我需要提到的参数uri,因为我不知道hadoop在linux上会把文件复制到哪里?
还有,我试着复制 junkwords.txt 手动将文件复制到hdfs,并在命令行中指定hdfs路径

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

这是一个 FileNotFoundException 当我在本地windows计算机上运行作业时。
使用-file命令行选项从远程计算机传递时,访问mapper中分布式缓存文件的解决方案是什么?

gcxthw6b

gcxthw6b1#

DistributedCache.addCacheFile()

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

相关问题