No FileSystem for scheme: hdfs問題


通過FileSystem.get(conf)初始化的時候,要通過靜態加載來實現,其加載類的方法代碼如下:

private static FileSystem createFileSystem(URI uri, Configuration conf
      ) throws IOException {
    Class<?> clazz = conf.getClass("fs." + uri.getScheme() + ".impl", null); 
    if (clazz == null) {
      throw new IOException("No FileSystem for scheme: " + uri.getScheme());
    }
    FileSystem fs = (FileSystem)ReflectionUtils.newInstance(clazz, conf);
    fs.initialize(uri, conf);
    return fs;
  }

onf.getClass需要讀取hadoop-common-x.jar下面的core-default.xml,但是這個xml里面沒有fs.hdfs.impl的配置信息,所以需要將這個類給配置上去。

將hadoop-commom-x.jar里面的core-default.xml文件取出並修改,添加如下代碼:

<property>
<name>fs.hdfs.impl</name>
<value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
<description>The FileSystem for hdfs: uris.</description>
</property>

或者應用代碼使用時候,自行添加:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM