[HADOOP] HDFS에서 데이터 읽기-프로그램이 경로를 찾을 수 없습니다
HADOOPHDFS에서 데이터 읽기-프로그램이 경로를 찾을 수 없습니다
HDFS에서 파일 내용을 읽으려고합니다. 내 코드는 다음과 같습니다-
package gen;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class ReadFromHDFS {
public static void main(String[] args) throws Exception {
if (args.length < 1) {
System.out.println("Usage: ReadFromHDFS <hdfs-file-path-to-read-from>");
System.out.println("Example: ReadFromHDFS 'hdfs:/localhost:9000/myFirstSelfWriteFile'");
System.exit(-1);
}
try {
Path path = new Path(args[0]);
FileSystem fileSystem = FileSystem.get(new Configuration());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileSystem.open(path)));
String line = bufferedReader.readLine();
while (line != null) {
System.out.println(line);
line = bufferedReader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
그러나이 프로그램에 내 HDFS 디렉토리의 경로를 지정하는 방법을 알 수 없습니다. 나는 시도했다-
java -cp <hadoop jar:myjar> gen.ReadFromHDFS <path>
어디에서 경로를 사용하여 디렉토리를 직접 참조하려고했는데 (내가 hadoop fs -ls를 할 때 볼 수 있음) 디렉토리 내부의 파일에 hdfs : / localhost, hdfs : /를 추가하면 아무것도 작동하지 않습니다. 폴더의 경로를 HDFS로 정확히 전달하는 방법을 알려주는 사람이 있습니까? 예를 들어, 경로를 접두사없이 직접 제공하면 파일이 존재하지 않는다고 말합니다.
편집 : 지금까지 해결책 중 어느 것도 나를 위해 작동하지 않는 것 같습니다. 나는 항상 예외를 받는다-
java.io.FileNotFoundExceptoin: File <filename> does not exist.
at org.apache.hadoop.fs.getFileSystem.getFileStatus(RawLocalFileSystem.java:361)
파일을 로컬에서 찾으려고합니다.
해결법
-
==============================
1.시험
시험
FileSystem fileSystem = FileSystem.get(new Configuration()); Path path = new Path(fileSystem.getName() + "/" + args[0]); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileSystem.open(path))); String line = bufferedReader.readLine();
HDFS에서 파일 경로를 접두사없이 제공하십시오.
"/myFirstSelfWriteFile"
"hdfs : / localhost"를 포함하지 마십시오
-
==============================
2.패키지 org.apache.hadoop.fs (FileSystem, FSDataInputStream, FSDataOutputStream 및 Path)의 클래스를 사용해야합니다. 몇 가지 기사가 있지만 Hadoop Wiki 에서이 기사를 사용합니다.
패키지 org.apache.hadoop.fs (FileSystem, FSDataInputStream, FSDataOutputStream 및 Path)의 클래스를 사용해야합니다. 몇 가지 기사가 있지만 Hadoop Wiki 에서이 기사를 사용합니다.
-
==============================
3.경로에 하나가 누락 된 것처럼 보입니다. 파일 시스템 뒤에 /가 있어야합니다. 다음 경로를 지정하십시오
경로에 하나가 누락 된 것처럼 보입니다. 파일 시스템 뒤에 /가 있어야합니다. 다음 경로를 지정하십시오
hdfs://localhost:9000/myFirstSelfWriteFile
from https://stackoverflow.com/questions/24986887/reading-data-from-hdfs-my-program-cant-find-the-path by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 평균을 찾기 위해지도 / 직무 작업 작성에 도움이 필요합니다 (0) | 2019.09.10 |
---|---|
[HADOOP] Sqoop 가져 오기 실패, UnsupportedClassVersionError (0) | 2019.09.10 |
[HADOOP] Hive에서 아이슬란드 어 가시 문자를 구분 기호로 사용 (0) | 2019.09.10 |
[HADOOP] 돼지-지도 가방에서 반복하는 방법 (0) | 2019.09.10 |
[HADOOP] 쉘 스크립트에서 Hadoop 명령 실행 (0) | 2019.09.10 |