热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解决:java.io.IOException:NoFileSystemforscheme:hdfs

解决:java.io.IOException:NoFileSystemforscheme: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


推荐阅读
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
author-avatar
佳鈺佳琴欣怡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有