解决:java.io.IOException: No FileSystem for scheme: hdfs
解决:java.io.IOException: No FileSystem for scheme: hdfs
开发项目初期,写完代码开始放到服务器上开始测试的时候,报出这样的一个错,不知道怎么处理了,尝试了重新配置HDFS的Configuration,也不行,无奈之下,只好查看源代码,分析错误是从哪里里报出来的。

首先把hadoop-common-2.6.0-cdh5.7.0这个jar包解压,按照报错的类,找到对应的方法,使用反编译工具打开FileSystem这个类,查看里面的源代码实现,首先看get方法:


这个get方法里面有创建FileSystem的方法,createFileSystem就是用来创建FileSystem的,报错的可能性,只能在这个方法里,因为这个方法在读取我们的配置文件,也就是Configuration。我们打开createFileSystem这个方法继续跟踪源码的实现过程:

从这个方法中,我们可以看到报错的信息以及什么情况下他会报出这样的错误,知道了源头后,我们的问题就好解决多了,从代码中可以看到,当Class classz为空的时候就报No FileSystem for scheme 这个错误,在往上看,这个对象是由getFileSystemClass这个方法创建返回的,我们再打开这个方法:

看到这里发现问题了,这个方法需要读取core-default.xml中定义的“fs.”+scheme+”.impl”,这里是读取fs.hdfs.impl这个配置信息,这个信息在配置文件core-default.xml中没有配置,因此会报错,我们找到这个配置文件:

打开这个配置文件,翻到最后发现没有相关的配置,加入指定实现类配置即可,加入这几句话:

这样读取配置文件,加载类就可以了,重新测试,问题得到解决。
总结:发生这个错误的原因在于在开发过程中,项目Hadoop版本进行了升级,旧版本的jar包中没有这个方法的实现类配置,所以找不到。因为开始的时候导入的是我们上一个项目的jar包,所有还是不能懒,导入对应新版本的jar包就可以了。另外,在遇到问题的时候不要着急,先找出可能的解决方法仔,实在不行,查看源码,细找出问题的根源,顺藤摸瓜,一步步找出原因,问题才能顺利解决。
解决:java.io.IOException: No FileSystem for scheme: hdfs的更多相关文章
- Eclipse maven hadoop -- java.io.IOException: No FileSystem for scheme: hdfs
2019-01-10 概述 今天在Windows系统下新安装了Eclipse和maven的环境,想利用Maven构建一个Hadoop程序的,结果却发现程序运行时一直报 “No FileSystem f ...
- spark运行java-jar:Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
今天碰到的一个 spark问题,困扰好久才解决 首先我的spark集群部署使用的部署包是官方提供的 spark-1.0.2-bin-hadoop2.tgz 部署在hadoop集群上. 在运行java ...
- java.io.IOException: No FileSystem for scheme: hdfs
在这篇文章中,介绍了如何将Maven依赖的包一起打包进jar包.使用maven-assembly打成jar后,将这个jar提供给其他工程引用的时候,报出如下错误: log4j:WARN No appe ...
- WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Exception in thread "main" java.io.IOException: No FileSystem for sc F
1.执行脚本程序报如下所示的错误: [hadoop@slaver1 script_hadoop]$ hadoop jar web_click_mr_hive.jar com.bie.hive.mr.C ...
- 解决java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, 系统找不到指定的文件 的错误
一.外部环境: 系统环境:Windows 8 磁盘分区:只有C盘 开发环境:IntelliJ IDEA Community Edition 2016.1.3(64) 执行代码:rdd.saveAsTe ...
- android环境下解决java.io.IOException: Malformed ipv6异常的方法
今天做客户端想服务端提交信息的时候,报出了如标题所显示的方法 方法以及参数如下: 输入的参数为:http://192.168.1.173:8080/Api/petinfo/petinfo?flag=a ...
- 解决: java.io.IOException: 打开的文件过多 的问题
问题 前一阵子公司项目做了一次压力测试, 中间出现了一个问题: 在50多个并发的时候会出现 java.io.IOException: 打开的文件过多 这个异常. 但是在没有并发的时候是不会出现这个问题 ...
- 记录解决java.io.IOException: Server returned HTTP response code: 500 for URL:xxxxxxxx
踩坑经历 因为项目需要去对接别的接口,使用URLConnection POST请求https接口,发送json数组时遇到java.io.IOException: Server returned HTT ...
- 解决java.io.IOException: Cannot run program "javac"问题,并设置jdk版本
原因:没有配置java路径 解决方法:设置java_home路径 设置jdk版本是10的方法:在sbt文件中添加一行: javacOptions := Seq(") 然后重新执行命令:sbt ...
随机推荐
- JavaSe:UncaughtExceptionHandler
Java中,出现对于异常的处理,通常是使用try{}catch()来捕获处理的.但是在使用trycatch时,未必会将所有的异常都捕获到,所以方法声明时可以有throws xxxException. ...
- idea 导入项目后 有的项目目录结构不展开解决办法
如图:可能会出现这中国情况. 解决办法: 1.一般项目导入完成后,但是目录不展开, 2.出现这种情况一般情况下, 关闭idea close idea ,然后重新导入一遍就OK.
- 判断DataTable某一列是否是时间列
DataTable dt = new DataTable("Table0"); dt.Columns.Add("column0", System.Type.Ge ...
- DataBase MongoDB高级知识-易扩展
MongoDB高级知识-易扩展 应用程序数据集的大小正在以不可思议的速度增长.随着可用宽带的增长和存储器价格的下跌,即使是一个小规模的应用程序,需要存储的数据也可能大的惊人,甚至超出了很多数据库的处理 ...
- 挑战App Store,微信通过“跳一跳”秀了一下“小程序”的肌肉
2017年即将结束的时候,微信放了一个大招.随着最新的微信v6.6.1版本更新,基于小程序的"小游戏"板块正式上线.微信上首发的这款"小游戏"叫"跳一 ...
- 谈谈CommonsChunkPlugin抽取公共模块
引言 webpack插件CommonsChunkPlugin的主要作用是抽取webpack项目入口chunk的公共部分,具体的用法就不做过多介绍,不太了解可以参考webpack官网介绍: 该插件是we ...
- php date函数
PHP星期几获取代码: 1 date("l"); 2 //data就可以获取英文的星期比如Sunday 3 date("w"); 4 //这个可以获取数字星期比 ...
- KVM(二):KVM应用
++++++++++++++++++++++++++++++创建和拍摄快照++++++++++++++++++++++++++++++++++ KVM快照方法常用的是qemu-img snapshot ...
- Linux并发连接上百万的配置
To support over 500k users, you *need* - A bits hardware/kernel (AMD64, Opterons) - At least 8GB of ...
- java获取properties配置文件值
package me.ilt.Blog.util; import java.io.File; import java.io.FileInputStream; import java.io.IOExce ...