Hadoop クラスターに大きな CSV ファイルがあります。ファイルの最初の行は、フィールド名で構成される「ヘッダー」行です。このヘッダー行で操作を行いたいのですが、ファイル全体を処理したくありません。また、私のプログラムは Java で書かれ、Spark を使用しています。
Hadoop クラスターで大きな CSV ファイルの最初の行だけを読み取る効率的な方法は何ですか?
Hadoop クラスターに大きな CSV ファイルがあります。ファイルの最初の行は、フィールド名で構成される「ヘッダー」行です。このヘッダー行で操作を行いたいのですが、ファイル全体を処理したくありません。また、私のプログラムは Java で書かれ、Spark を使用しています。
Hadoop クラスターで大きな CSV ファイルの最初の行だけを読み取る効率的な方法は何ですか?
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 を使用せず、適切な速度で実行されます。