【问题标题】:How to read first line in Hadoop (HDFS) file efficiently using Java?如何使用 Java 有效地读取 Hadoop (HDFS) 文件中的第一行?
【发布时间】:2014-02-06 22:53:47
【问题描述】:

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

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

【问题讨论】:

  • 讽刺?不确定。如果你觉得我可以做得更多,请告诉我。尝试学习如何正确使用 StackOverflow。谢谢。
  • 是的讽刺。如果你说类似的话会好得多,我尝试了下面的方法,但它有这样那样的错误。

标签: java csv hadoop apache-spark


【解决方案1】:

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

【讨论】:

  • 在阅读了这些类的实际工作原理之后,看来您是对的!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 2023-03-04
  • 2022-08-12
  • 1970-01-01
相关资源
最近更新 更多