我的代码中有这一行:
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
答案 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”使它作为本地运行(伪分布式)!