[HADOOP] Java를 사용하여 효율적으로 Hadoop (HDFS) 파일의 첫 번째 줄을 읽는 방법은 무엇입니까?
HADOOPJava를 사용하여 효율적으로 Hadoop (HDFS) 파일의 첫 번째 줄을 읽는 방법은 무엇입니까?
Hadoop 클러스터에 큰 CSV 파일이 있습니다. 파일의 첫 번째 행은 '헤더'행이며 필드 이름으로 구성됩니다. 이 헤더 행에서 작업을 수행하고 싶지만 전체 파일을 처리하고 싶지 않습니다. 또한 내 프로그램은 Java로 작성되었으며 Spark를 사용합니다.
Hadoop 클러스터에서 큰 CSV 파일의 첫 번째 줄만 읽는 효율적인 방법은 무엇입니까?
해결법
-
==============================
1.FileSystem 클래스 및 친구를 사용하여 hdfs 파일에 액세스 할 수 있습니다.
FileSystem 클래스 및 친구를 사용하여 hdfs 파일에 액세스 할 수 있습니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hdfs.DistributedFileSystem; DistributedFileSystem fileSystem = new DistributedFileSystem(); Configuration conf = new Configuration(); fileSystem.initialize(new URI("hdfs://namenode-host:54310"), conf); FSDataInputStream input = fileSystem.open(new Path("/path/to/file.csv")); System.out.println((new BufferedReader(new InputStreamReader(input))).readLine());
이 코드는 MapReduce를 사용하지 않으며 적절한 속도로 실행됩니다.
from https://stackoverflow.com/questions/21188788/how-to-read-first-line-in-hadoop-hdfs-file-efficiently-using-java by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하둡 얀 노드 목록은 슬레이브를 localhost.localdomain : #somenumber로 표시합니다. 연결 거부 예외 (0) | 2019.08.07 |
---|---|
[HADOOP] 하둡 복제 인자 혼란 (0) | 2019.08.07 |
[HADOOP] 오류 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode : doCheckpoint의 예외 (0) | 2019.08.07 |
[HADOOP] Hive에서 여러 열의 열을 하나로 결합 (0) | 2019.08.07 |
[HADOOP] Python UDF에서 외부 파일에 액세스 (0) | 2019.08.07 |