我的 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,并且会以合理的速度运行。