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

ahy6op9u  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(492)

我的代码中有这样一行:

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 ..main(Degree.java:137)

注意:我试着用 `new Path(otherArgs[1])` 没有uri,但得到了完全相同的错误!
谢谢,-k
p8ekf7hl

p8ekf7hl1#

看起来您尚未在core-site.xml中设置fs.default.name。
检查此链接
如果已经设置了,请确保配置文件位于类路径中
您还可以从驱动程序中设置fs.default.name属性

conf.set("fs.default.name", "hdfs://yourserver:port");
webghufk

webghufk2#

原来我是用“hadoop-jar”而不是“hadoopjar”运行jar的。所有的conf文件都是正确的。
问题解决了,但我仍然不知道为什么使用“-jar”使它作为本地(伪分布式)运行!

相关问题