- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用 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
用于 LocalFileSystem
,hadoop-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-commons
的 FileSystem
列表会覆盖来自 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/
我是一名优秀的程序员,十分优秀!