日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java.io.IOException No FileSystem for scheme hdfs

發布時間:2024/9/19 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java.io.IOException No FileSystem for scheme hdfs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

以下將轉載兩篇博文,博文中有解決方法。

1.Java下Maven打包項目解決方法

log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfsat org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2644)at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2651)at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:92)at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2687)at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2669)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:371)at org.apache.hadoop.fs.FileSystem$1.run(FileSystem.java:160)at org.apache.hadoop.fs.FileSystem$1.run(FileSystem.java:157)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:157)at com.mytest2.mypro2.App.main(App.java:21)

在一番排查和查閱資料后發現使用Maven-assembly-plugin(fatjar也是一樣的)的時候會覆蓋相同的文件,然而HDFS的hadoop-hdfs-2.7.1.jar和hadoop-common-2.7.1.jar都有org.apache.hadoop.hdfs.DistributedFileSystem,將會進行覆蓋。在運行的過程中使用了hdfs://IP : port的schema,而在生成的最終jar包中,無法找到這個schema的實現。所以就拋出了

解決方案

在代碼中加入:

configuration.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");

————————————————
版權聲明:本文為CSDN博主「qq_25011427」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_25011427/article/details/84888733

2.如果是python下

工作過程中遇到了這個問題,調用org.apache.hadoop.fs.FileSystem這一套API來對hdfs上面的文件進行操作,但是本地運行正常的代碼打包上傳到服務器上發現運行會報錯Exception in thread “main” java.io.IOException: No FileSystem for scheme: hdfs

經過查閱資料,加上自己排查,發現問題是這樣的:

和hadoop filesystem相關的包有以下兩個:hadoop-hdfs-xxx.jar和hadoop-common-xxx.jar(xxx是版本),而他們當中都有org.apache.hadoop.fs.FileSystem這個文件。
我們調用的接口是hadoop-hdfs-xxx.jar中的,所以很明顯No FileSystem for scheme: hdfs這個問題是因為,相同文件被覆蓋了。將hadoop-common-xxx.jar中的services內容打進了最終的jar包中,而hadoop-hdfs-xxx.jar包中,services的內容被覆蓋了。
解決辦法
解決辦法很簡單:在設置hadoop的配置的時候,顯示設置這個類:"org.apache.hadoop.hdfs.DistributedFileSystem
like this:

var conf: Configuration = new Configuration() var fs: FileSystem = nullconf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem") fs = FileSystem.get( new URI("hdfs://ip:port"), conf )

重新打包測試,莫得問題了
————————————————
版權聲明:本文為CSDN博主「陽呀么陽陽陽」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_32038679/article/details/86481809

總結

以上是生活随笔為你收集整理的java.io.IOException No FileSystem for scheme hdfs的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。