zoukankan      html  css  js  c++  java
  • java.io.IOException: No FileSystem for scheme: hdfs

    maven工程,执行jar包的时候出错:

    Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
    但是,在没有打成jar包的工程中,是可以正常运行的,通过长时间的观察和分析,
    发现与hadoop filesystem相关的包有两个,分别是:hadoop-hdfs-2.7.1.jar和hadoop-common-2.7.1.jar.

    这两个包的services目录下都有,org.apache.hadoop.fs.FileSystem这个文件。使用Maven-assembly-plugin的时候,
    会将所有依赖的包unpack,然后在pack,这样就会出现,同样的文件被覆盖的情况。

    maven-assembly-plugin(fatjar也是一样的),将hadoop-common.jar中的services内容打进了最终的jar包中,
    而hadoop-hdfs.jar包中,services的内容被覆盖了。由于我们的函数调用是这样写的:

    在函数中使用了hdfs://IP : port的schema,而在生成的最终jar包中,无法找到这个schema的实现。所以就抛出了

    
    

    java.io.IOException: No FileSystem for scheme: hdfs

    
    

    解决方案是,在设置hadoop的配置的时候,显示设置这个类:"org.apache.hadoop.hdfs.DistributedFileSystem:

    
    
    val conf = new Configuration() //hadoop配置,hadoop-default.xml,hadoop-site.xml的<name>.</name><value>.</value>
    conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem")









  • 相关阅读:
    java 堆栈 附图
    synchronized、volatile关键字
    Swift随笔
    java |、&、~、>>、<<运算符的作用。
    java双向链表示意图
    java单链表
    List集合的过滤之lambda表达式
    SQL hint作用
    创建触发器的一般语法
    多线程创建方式
  • 原文地址:https://www.cnblogs.com/xl717/p/11752136.html
Copyright © 2011-2022 走看看