我得到了
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);
由于
答案 0 :(得分:2)
必须首先使用HDFS。我将在这里走出困境,但我认为这是因为文件被奴隶“拉”到本地分布式缓存,而不是被推送。由于它们被拉动,它们无法访问该本地路径。
答案 1 :(得分:0)
不,我不认为你可以在分布式缓存上放任何东西,而不是先将它放在HDFS中。所有Hadoop作业都使用与HDFS相关的输入/输出路径。
答案 2 :(得分:0)
文件也可以在本地系统,hdfs,S3或其他群集中。您需要指定为
-files hdfs://如果文件在hdfs中
默认情况下它采用本地文件系统。