2012-03-15 62 views
2

我得到文件是否需要在HDFS中才能在分布式缓存中使用?

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: file:/path/to/my.jar, expected: hdfs://ec2-xx-xx-xx-xxx.compute-1.amazonaws.com 

,如果我尝试将本地文件在Hadoop中添加分布式缓存。当文件在HDFS上时,我不会收到这个错误(显然,因为它使用了预期的FS)。有没有办法在分布式缓存中使用本地文件,而无需先将其复制到hdfs?下面的代码片段:

Configuration conf = job.getConfiguration(); 
FileSystem fs = FileSystem.getLocal(conf); 
Path dependency = fs.makeQualified(new Path("/local/path/to/my.jar"); 
DistributedCache.addArchiveToClassPath(path, conf); 

感谢

回答

2

它是在HDFS第一。我将在这里出现一个问题,但我认为这是因为该文件被从服务器“拉”到本地分布式缓存,而不是被推送。由于他们被拉扯,他们无法访问该当地路径。

0

不,我不认为你可以将任何东西放在分布式缓存中,而不必先将它放在HDFS中。所有Hadoop作业都使用与HDFS相关的输入/输出路径。

0

文件既可以是本地系统,也可以是hdfs,S3或其他群集。你需要指定为

-files HDFS://如果文件是在HDFS

默认情况下它假定本地文件系统。

相关问题