Distributedfilesystem类使用本地而不是分布式类

时间:2014-10-14 03:36:09

标签: java hadoop distributed-filesystem

我的代码中有这一行:

DistributedFileSystem.get(conf).delete(new Path(new URI(otherArgs[1])), true);    

otherArgs[1]具有此值:hdfs://master:54310/input/results

我收到此例外:

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS:hdfs://master:54310/input/results, expected: file:///
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:354)
at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:55)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:367)
at org.apache.hadoop.fs.ChecksumFileSystem.delete(ChecksumFileSystem.java:430)
at <package>.<classname>.main(Degree.java:137)    

注意:我尝试使用没有URI的new Path(otherArgs[1])但是得到了完全相同的错误!

谢谢, -K

2 个答案:

答案 0 :(得分:0)

您好像没有在core-site.xml中设置 fs.default.name

检查此link

如果您已经设置了,请确保配置文件位于类路径

您还可以从驱动程序

设置fs.default.name属性
conf.set("fs.default.name", "hdfs://yourserver:port");

答案 1 :(得分:0)

事实证明我使用“hadoop -jar”代替“hadoop jar”运行我的jar。所有conf文件都是正确的并且到位。

问题解决但我仍然不知道为什么使用“-jar”使它作为本地运行(伪分布式)!