HDFS에서 파일을 읽고 쓰려고합니다. 먼저, 그것을 읽고 콘솔에 표시하려고합니다. 그것은 어떤 경고도주지 않고 실행 경고뿐만 아니라 그것은 콘솔에 파일에서 데이터를 인쇄하지 않습니다, 내 파일은 이미 hdfs에 저장되어 있으며, 나는 그것을 사용자 인터페이스에서 볼 수 있습니다. 나는 내가 주어진 경로에 어떤 문제가 있다고 생각한다. 나는 자바에 처음으로 hadoop을 연결하는 것으로 확신하지 않는다. IDE로 Eclipse를 사용하고있다. 누군가 이걸 들여다 볼 수 있니?java : no 출력을 사용하여 hadoop에서 파일을 읽음
또한 이름 노드에 50075 포트 번호를 지정하려고했지만 이것도 작동하지 않았습니다.
편집 : 아무도 나에게 hdfs에 저장된 파일에 액세스하기위한 Java에서 올바른 경로를 제공하는 방법을 말해 줄 수 있습니까?
나는이 예외를
파일 파일을 얻고있다 :/로컬 호스트 : 54310은/사용자/hduser/project11/a.txt이 존재하지 않습니다.
java.io.FileNotFoundException : 파일 파일 :/localhost : 54310/user/hduser/project11/a.txt가 존재하지 않습니다.
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:397)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:251)
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:125)
at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:283)
at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:427)
at newclassentry.main(newclassentry.java:16)
경로와 관련된 문제가 있지만 올바른 경로가 무엇인지 알 수 없습니다.
localhost namenode에서/user/hduser/project11 폴더에 액세스하고 있습니다. 파일이 비어 있지 않습니다. 코드 :
import java.io.*;
import java.util.*;
import java.net.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;
public class newclassentry {
public static void main(String [] args) throws Exception {
try {
Path pt = new Path("hdfs://localhost:54310/user/hduser/project11/a.txt");
FileSystem fs = FileSystem.get(new Configuration());
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(pt)));
String line;
line = br.readLine();
while ((line = br.readLine()) != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
당신은 볼 수없는 예외가있을 수 있습니다. (예외 e) { }' – Jens
에 system.err.println'을 추가하십시오. 예외를 얻는 지 여부를 어떻게 알 수 있습니까? catch로는 아무 것도하지 않습니다. – Raj
감사합니다 Jens, 예외가 있습니다. 잘못된 FS : hdfs : // localhost : 54310/user/hduser/project11/a.txt, 예상 : file : /// 그리고 hdfs : //를 file : ///로 바꿨을 때 ... 채우기를 제공합니다 : 파일 파일 :/localhost : 54310/user/hduser/project11/a.txt가 존재하지 않습니다. – user3714726