我使用命令从远程机器(窗口)运行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()
在设置作业时,确实应将文件添加到分布式缓存中。