2014-10-14 6 views
0

나는 내 코드에서이 라인을 가지고 :Distributedfilesystem 클래스 사용 지역이 아닌 분산 클래스는

Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS:hdfs://master:54310/input/results, expected: file:/// 
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:354) 
at org.apache.hadoop.fs.RawLocalFileSystem.pathToFile(RawLocalFileSystem.java:55) 
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:367) 
at org.apache.hadoop.fs.ChecksumFileSystem.delete(ChecksumFileSystem.java:430) 
at <package>.<classname>.main(Degree.java:137)  

참고 :

hdfs://master:54310/input/results 나는이 예외가 나타날 수

DistributedFileSystem.get(conf).delete(new Path(new URI(otherArgs[1])), true);  

otherArgs[1]이 값을 가지고 : URI없이 new Path(otherArgs[1])을 사용하려고했지만 정확한 오류가 발생했습니다! 당신이 코어를 site.xml에 fs.default.name을 설정하지 않은 것처럼

덕분에, -K

답변

0

"hadoop jar"대신 "hadoop-jar"를 사용하여 항아리를 사용하고있는 것으로 나타났습니다. 모든 conf 파일은 정확하고 제 위치에 있습니다.

문제가 해결되었지만 여전히 "-jar"를 사용하여 로컬 (의사 배포판)으로 실행되는 이유를 알 수 없습니다!

0

것 같습니다.

확인이 link 당신이 이미 설정 파일이 클래스 경로에 있는지 확인하는 것이 설정 한 경우

또한 드라이버에서 fs.default.name 속성을 설정할 수 있습니다

conf.set("fs.default.name", "hdfs://yourserver:port");