복붙노트

[HADOOP] Java를 사용하여 효율적으로 Hadoop (HDFS) 파일의 첫 번째 줄을 읽는 방법은 무엇입니까?

HADOOP

Java를 사용하여 효율적으로 Hadoop (HDFS) 파일의 첫 번째 줄을 읽는 방법은 무엇입니까?

Hadoop 클러스터에 큰 CSV 파일이 있습니다. 파일의 첫 번째 행은 '헤더'행이며 필드 이름으로 구성됩니다. 이 헤더 행에서 작업을 수행하고 싶지만 전체 파일을 처리하고 싶지 않습니다. 또한 내 프로그램은 Java로 작성되었으며 Spark를 사용합니다.

Hadoop 클러스터에서 큰 CSV 파일의 첫 번째 줄만 읽는 효율적인 방법은 무엇입니까?

해결법

  1. ==============================

    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를 사용하지 않으며 적절한 속도로 실행됩니다.

  2. 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