gpt4 book ai didi

java - hadoop No FileSystem for scheme : file

转载 作者:IT老高 更新时间:2023-10-28 11:40:50 29 4
gpt4 key购买 nike

我正在尝试使用 hadoop 运行一个简单的 NaiveBayesClassifer,但出现此错误

Exception in thread "main" java.io.IOException: No FileSystem for scheme: file
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1375)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:95)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:180)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:175)
at org.apache.mahout.classifier.naivebayes.NaiveBayesModel.materialize(NaiveBayesModel.java:100)

代码:

    Configuration configuration = new Configuration();
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), configuration);// error in this line..

modelPath 指向 NaiveBayes.bin 文件,配置对象正在打印 - Configuration: core-default.xml, core-site.xml

我认为是因为 jar ,有什么想法吗?

最佳答案

这是maven-assembly插件破坏事物的典型案例。

为什么这会发生在我们身上

不同的 JAR(hadoop-commons 用于 LocalFileSystemhadoop-hdfs 用于 DistributedFileSystem)每个都包含不同的在他们的 META-INFO/services 目录中名为 org.apache.hadoop.fs.FileSystem 的文件。该文件列出了他们想要声明的文件系统实现的规范类名(这称为通过 java.util.ServiceLoader 实现的服务提供者接口(interface),参见 org.apache.hadoop.FileSystem#loadFileSystems)。

当我们使用 maven-assembly-plugin 时,它会将我们所有的 JAR 合并为一个,以及所有 META-INFO/services/org.apache.hadoop.fs.FileSystem 互相覆盖。这些文件中只剩下一个(最后一个添加的文件)。在这种情况下,来自 hadoop-commonsFileSystem 列表会覆盖来自 hadoop-hdfs 的列表,因此 DistributedFileSystem 是不再声明。

我们如何修复它

在加载 Hadoop 配置之后,但在执行任何与 FileSystem 相关的操作之前,我们称之为:

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

更新:正确修复

krookedking 引起我的注意,有一种基于配置的方法可以使 maven-assembly 使用所有 的合并版本FileSystem 服务声明,查看 his answer下面。

关于java - hadoop No FileSystem for scheme : file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17265002/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com