【转载】解决No FileSystem for scheme: hdfs问题
转载请注明出处:http://www.codelast.com/
如果你在程序中(不是一个Hadoop job程序)有读写HDFS文件的逻辑,那么程序运行的时候可能会报下面的错:
Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2676)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2690)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2733)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2715)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:382)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:181)
......
假设项目是由Maven打包的,那么有几个可能的原因是:
『1』漏添加了Hadoop的依赖到pom.mxl中
需要的依赖如下:
注意,如果只有前两个依赖,那么程序可能不会有编译问题,但在运行的时候就会报标题里所说的错误。
文章来源:http://www.codelast.com/
『2』打包不正确
在打出的jar包中,应该在这个路径下有此文件:META-INF/services/org.apache.hadoop.fs.FileSystem,如果没有,那么肯定有问题;如果有,那么也可能有问题。假设你是用 Maven 的 shade 插件来打包的,那么它在pom.xml中的配置可能是这样的: