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

时间:2013-10-25 09:48:03

标签: hadoop mapreduce

我使用命令

从远程计算机(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中访问分布式缓存文件的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

DistributedCache.addCacheFile()

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