java.io.IOException No FileSystem for scheme hdfs
java.io.IOException: No FileSystem for scheme: hdfs
以下將轉(zhuǎn)載兩篇博文,博文中有解決方法。
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)在一番排查和查閱資料后發(fā)現(xiàn)使用Maven-assembly-plugin(fatjar也是一樣的)的時候會覆蓋相同的文件,然而HDFS的hadoop-hdfs-2.7.1.jar和hadoop-common-2.7.1.jar都有org.apache.hadoop.hdfs.DistributedFileSystem,將會進(jìn)行覆蓋。在運行的過程中使用了hdfs://IP : port的schema,而在生成的最終jar包中,無法找到這個schema的實現(xiàn)。所以就拋出了
解決方案
在代碼中加入:
configuration.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");————————————————
版權(quán)聲明:本文為CSDN博主「qq_25011427」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_25011427/article/details/84888733
2.如果是python下
工作過程中遇到了這個問題,調(diào)用org.apache.hadoop.fs.FileSystem這一套API來對hdfs上面的文件進(jìn)行操作,但是本地運行正常的代碼打包上傳到服務(wù)器上發(fā)現(xiàn)運行會報錯Exception in thread “main” java.io.IOException: No FileSystem for scheme: hdfs
經(jīng)過查閱資料,加上自己排查,發(fā)現(xiàn)問題是這樣的:
和hadoop filesystem相關(guān)的包有以下兩個:hadoop-hdfs-xxx.jar和hadoop-common-xxx.jar(xxx是版本),而他們當(dāng)中都有org.apache.hadoop.fs.FileSystem這個文件。
我們調(diào)用的接口是hadoop-hdfs-xxx.jar中的,所以很明顯No FileSystem for scheme: hdfs這個問題是因為,相同文件被覆蓋了。將hadoop-common-xxx.jar中的services內(nèi)容打進(jìn)了最終的jar包中,而hadoop-hdfs-xxx.jar包中,services的內(nèi)容被覆蓋了。
解決辦法
解決辦法很簡單:在設(shè)置hadoop的配置的時候,顯示設(shè)置這個類:"org.apache.hadoop.hdfs.DistributedFileSystem
like this:
重新打包測試,莫得問題了
————————————————
版權(quán)聲明:本文為CSDN博主「陽呀么陽陽陽」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_32038679/article/details/86481809
總結(jié)
以上是生活随笔為你收集整理的java.io.IOException No FileSystem for scheme hdfs的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王自如首次谈入职格力:跟顶级企业家一起工
- 下一篇: 消息称极狐阿尔法 T5 将于广州车展首发