直接从 HDFS 读取文件

Posted

技术标签:

【中文标题】直接从 HDFS 读取文件【英文标题】:Read File directly from HDFS 【发布时间】:2017-05-23 10:38:40 【问题描述】:

有没有办法通过使用HDFS路径直接从HDFS读取任何文件格式,而不必从HDFS本地拉文件并读取它。

【问题讨论】:

【参考方案1】:

您可以在 HDFS 上使用cat 命令读取常规文本文件。

hdfs dfs -cat /path/to/file.csv

要读取gz, bz2等压缩文件,您可以使用:

hdfs dfs -text /path/to/file.gz

这是 Hadoop 使用 FsShell comamnds 原生支持的两种读取方法。对于其他复杂的文件类型,您将不得不使用更复杂的方式,例如 Java 程序或类似的东西。

【讨论】:

【参考方案2】:

hdfs dfs -cat /path 或 hadoop fs -cat /path

【讨论】:

【参考方案3】:

您必须提取整个文件。无论您使用cat 还是text 命令,整个文件仍在流式传输到您的shell。命令结束时,文件没有任何残留。所以,如果你打算多次检查文件,最好get

作为 hdfs 客户端,您必须联系 namenode 以获取特定文件的所有块位置。

【讨论】:

标记为答案,因为它补充了所有其他答案【参考方案4】:

你可以试试 hdfs dfs -cat

用法:hdfs dfs -cat [-ignoreCrc] URI [URI ...]

hdfs dfs -cat /your/path

【讨论】:

以上是关于直接从 HDFS 读取文件的主要内容,如果未能解决你的问题,请参考以下文章

HDFS中的一个文件的内容可不可以一行一行地读取出来

SparkSQL - 直接读取镶木地板文件

如何从 Scala 代码中读取 HDFS 文件

Apache Drill 无法从 HDFS 读取文件(资源错误:无法创建模式树)

从 hdfs 读取文件 - pyspark

从 hdfs vs 本地目录读取文件