我使用命令
从远程计算机(windows)运行hadoop map red作业java -jar XMLDriver.jar -files junkwords.txt -libjars XMLInputFormat.jar
并将作业提交到运行hadoop的linux盒子。
我知道这个分发缓存文件将被发送到我的远程盒子上的HDFS(我是对的????)
但是在mapper代码中无法使用api
检索此文件名Path[] cacheFiles = DistributedCache.getLocalCacheFiles(conf);
fileName = cacheFiles[0].toString();
我应该使用DistributedCache.addCacheFile()
api和symlinks api,如果是这样,我需要提一下参数URI,因为我不知道linux盒子上的hadoop会将文件复制到哪里?
另外,我尝试手动将junkwords.txt
文件复制到hdfs并在命令行中将hdfs路径指定为
java -jar XMLDriver.jar -files /users/junkwords.txt -libjars XMLInputFormat.jar
当我在本地Windows机器上运行作业时,会抛出FileNotFoundException
。
使用-file命令行选项从远程计算机传递时,在mapper中访问分布式缓存文件的解决方案是什么?
答案 0 :(得分:0)
DistributedCache.addCacheFile()
您确实应该在设置作业时将文件添加到分布式缓存中。