从 hdfs vs 本地目录读取文件

Posted

技术标签:

【中文标题】从 hdfs vs 本地目录读取文件【英文标题】:Reading files from hdfs vs local directory 【发布时间】:2014-02-27 10:44:13 【问题描述】:

我是 hadoop 的初学者。我有两个疑问

1) 如何访问存储在 hdfs 中的文件?它与在 java.io 中使用 FileReader 并提供本地路径相同还是其他?

2) 我创建了一个文件夹,我在其中复制了要存储在 hdfs 中的文件和 mapreduce 程序的 jar 文件。当我在任何目录中运行命令时

$HADOOP_HOME/bin/hadoop dfs -ls

它只显示当前目录中的所有文件。那么这是否意味着所有文件都是在我没有明确添加的情况下添加的?

【问题讨论】:

【参考方案1】:

    是的,几乎一样。读取this post 从HDFS 读取文件。

    您应该记住,HDFS 不同于您的本地文件系统。使用hadoop dfs,您可以访问 HDFS,而不是本地文件系统。因此,hadoop dfs -ls /path/in/HDFS 向您显示/path/in/HDFS 目录的内容,而不是本地目录。这就是为什么它是一样的,无论你从哪里运行它。

如果你想“上传”/“下载”文件到/从 HDFS,你应该使用逗号:

hadoop dfs -copyFromLocal /local/path /path/in/HDFS

hadoop dfs -copyToLocal /path/in/HDFS /local/path,分别。

【讨论】:

in /path/in/HDFS 可以是任何目录还是必须是特定路径? HDFS 中的任何路径。通常它们以/user/hduser/ 开头,但这只是一个约定。

以上是关于从 hdfs vs 本地目录读取文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将hdfs里某一目录下的所有文件的文件名读取出来

sc.textFile()默认读取本地系统文件还是HDFS系统文件?

直接从 HDFS 读取文件

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

Pyspark:获取HDFS路径上的文件/目录列表

在本地文件系统(不是HDFS)中使用Scala读取Apache Spark中的文件时如何更改输入块大小[重复]