Hadoop 版本:2.7.3
问题出在下面的语句:
URL. setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
public class Test001 {
static{
URL. setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public void testURL(){
String path = "hdfs://hadoop.master:8020/input/mapred-site.xml.template";
InputStream input= null;
try {
input= new URL( path).openStream();
IOUtils. copyBytes(input, System.out, 4096, false );
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
IOUtils. closeStream(input);
}
}
public static void main(String[] args){
Test001 obj = new Test001();
obj.testURL();
}
}
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: java.io.IOException: No FileSystem for scheme: file
at org.apache.hadoop.fs.FsUrlStreamHandlerFactory.(FsUrlStreamHandlerFactory.java:64)
at org.apache.hadoop.fs.FsUrlStreamHandlerFactory.(FsUrlStreamHandlerFactory.java:55)
at com.idbk.test.hadoop.Test001.(Test001.java:15)
Caused by: java.io.IOException: No FileSystem for scheme: file
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2660)
at org.apache.hadoop.fs.FsUrlStreamHandlerFactory.(FsUrlStreamHandlerFactory.java:62)
... 2 more
或者在代码中加入
解决方案2:
hadoopConfig.set("fs.hdfs.impl",
org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
);
hadoopConfig.set("fs.file.impl",
org.apache.hadoop.fs.LocalFileSystem.class.getName()
);
看看你的 core-site.xml