[java] 자바로 스파크의 분산 파일 시스템에 접근하기

스파크는 대용량의 데이터를 분산 처리하기 위한 플랫폼으로 널리 사용되고 있습니다. 이러한 데이터를 저장하는 데에 스파크는 분산 파일 시스템을 사용합니다. 본 포스트에서는 자바를 사용하여 스파크의 분산 파일 시스템에 접근하는 방법을 알아보겠습니다.

Hadoop 의존성 추가하기

분산 파일 시스템에 접근하기 위해서는 먼저 Hadoop의 의존성을 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가해주세요.

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.7.7</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음 종속성을 추가해주세요.

dependencies {
    implementation 'org.apache.hadoop:hadoop-client:2.7.7'
}

Hadoop Configuration 설정하기

스파크로 분산 파일 시스템에 접근하기 위해서는 Hadoop의 설정 정보를 설정해주어야 합니다. 다음과 같이 Hadoop의 Configuration 객체를 생성하고 설정값을 지정해주세요.

import org.apache.hadoop.conf.Configuration;

Configuration hadoopConfig = new Configuration();
hadoopConfig.set("fs.defaultFS", "hdfs://localhost:8020");
hadoopConfig.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");

fs.defaultFS 속성은 HDFS의 주소를 지정하는데, 위의 예제에서는 hdfs://localhost:8020로 지정되어 있습니다. 본인의 환경에 맞게 설정값을 수정해주세요.

파일 읽기 및 쓰기

Hadoop 설정이 완료되면, 자바 코드를 사용하여 분산 파일 시스템에 파일을 읽고 쓸 수 있습니다. 다음은 파일을 읽어오는 예제입니다.

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.Path;
import java.io.BufferedReader;
import java.io.InputStreamReader;

Configuration hadoopConfig = new Configuration();
// Hadoop 설정 생략

FileSystem fileSystem = FileSystem.get(hadoopConfig);
Path filePath = new Path("/path/to/file.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileSystem.open(filePath)));

String line;
while ((line = bufferedReader.readLine()) != null) {
    System.out.println(line);
}

bufferedReader.close();

위의 예제는 /path/to/file.txt 경로에 있는 파일을 읽어오는 코드입니다. 본인의 환경에 맞게 경로를 수정해주세요.

파일을 쓰는 예제는 다음과 같습니다.

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

Configuration hadoopConfig = new Configuration();
// Hadoop 설정 생략

FileSystem fileSystem = FileSystem.get(hadoopConfig);
Path filePath = new Path("/path/to/new_file.txt");
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileSystem.create(filePath)));

String content = "Hello, Spark!";
bufferedWriter.write(content);

bufferedWriter.close();

위의 예제는 /path/to/new_file.txt 경로에 새로운 파일을 생성하고, “Hello, Spark!”라는 내용을 기록하는 코드입니다. 본인의 환경에 맞게 경로와 파일 내용을 수정해주세요.

마무리

이번 포스트에서는 자바로 스파크의 분산 파일 시스템에 접근하는 방법을 알아보았습니다. Hadoop의 의존성을 추가하고, Hadoop Configuration을 설정한 후에 파일을 읽고 쓸 수 있습니다. 스파크와 함께 자바를 사용해 빅데이터를 다루는 과정에서 분산 파일 시스템을 활용해보시길 바랍니다.