4

Hadoop クラスターに大きな CSV ファイルがあります。ファイルの最初の行は、フィールド名で構成される「ヘッダー」行です。このヘッダー行で操作を行いたいのですが、ファイル全体を処理したくありません。また、私のプログラムは Java で書かれ、Spark を使用しています。

Hadoop クラスターで大きな CSV ファイルの最初の行だけを読み取る効率的な方法は何ですか?

4

1 に答える 1

5

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 を使用せず、適切な速度で実行されます。

于 2014-01-17T16:00:32.710 に答える