线程“main”java.io.ioexception中的异常:scheme:hdfs没有文件系统

clj7thdc  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(310)

因此,我已经在我的机器上安装了hadoop文件系统,并使用maven依赖关系来提供我的代码spark环境(spark-mllib(2.10)现在,我的代码使用spark-mllib。并使用此代码访问hadoop文件系统中的数据。

String finalData = ProjectProperties.hadoopBasePath + ProjectProperties.finalDataPath;
JavaRDD<LabeledPoint> data = MLUtils.loadLibSVMFile(jsc.sc(), finalData).toJavaRDD();

设置了以下属性。

finalDataPath = /data/finalInput.txt
hadoopBasePath = hdfs://127.0.0.1:54310

我通过命令从外部启动dfs节点

start-dfs.sh

现在,我的代码在从eclipse运行时运行得非常好。但是如果我将整个代码导出到一个可执行jar,它会给出以下异常。

Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2421)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2428)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:88)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2467)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2449)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:367)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:287)
    at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:221)
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:270)

我还检查了不同的解决方案,网上给出了这个问题,人们要求我添加以下内容

hadoopConfig.set("fs.hdfs.impl", 
        org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
    );
    hadoopConfig.set("fs.file.impl",
        org.apache.hadoop.fs.LocalFileSystem.class.getName()
    );

<property>
   <name>fs.file.impl</name>
   <value>org.apache.hadoop.fs.LocalFileSystem</value>
   <description>The FileSystem for file: uris.</description>
</property>

<property>
   <name>fs.hdfs.impl</name>
   <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
   <description>The FileSystem for hdfs: uris.</description>
</property>

但是我没有在我的项目中使用任何hadoop上下文或hadoop配置。只需使用url从hadoop加载数据。
有人能回答这个问题吗?请注意,这完全可以在eclipse中正常工作。只有当我将同一个项目作为可执行jar导出时,它才不起作用。
根据评论中的建议和网上的解决方案,我尝试了两件事。
在my pom.xml中添加了 hadoop-core , hadoop-hdfs 以及 hadoop-client 图书馆。
按照这里的建议,将上述属性配置添加到hadoop的site-core.xml中http://grokbase.com/t/cloudera/scm-users/1288xszz7r/no-filesystem-for-scheme-hdfs
但仍然没有得到解决的错误运气。在我的机器上以及我在其中一台远程机器上尝试过的本地出现相同的问题。
我还使用上面提到的链接在我的机器上以同样的方式安装了hadoop。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题