如何使用Java有效地读取Hadoop(HDFS)文件中的第一行?

时间:2014-01-17 14:52:56

标签: java csv hadoop apache-spark

我的Hadoop集群上有一个大型CSV文件。该文件的第一行是“标题”行,由字段名称组成。我想对这个标题行进行操作,但我不想处理整个文件。此外,我的程序是用Java编写的,并使用Spark。

在Hadoop群集上只读取大型CSV文件的第一行的有效方法是什么?

1 个答案:

答案 0 :(得分: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,并且会以合理的速度运行。