如何将文件从另一个驱动器的本地目录复制到Apache Hadoop中的HDFS?

时间:2019-09-16 08:14:21

标签: hadoop hdfs

我是Apache Hadoop的新手,我试图将一个简单的文本文件从本地目录复制到Hadoop上的HDFS,该文件已启动并正在运行。但是,Hadoop安装在D:中,而我的文件位于C:中。

如果我在上述驱动器中的文件中使用cmd中的-putcopyFromLocal命令,则不允许这样做。但是,如果我将文本文件放在同一D:驱动器中,则该文件将正确上传到Hadoop,并且可以在Hadoop本地主机上看到。与文件和Hadoop在同一驱动器中一起使用的代码如下:

hadoop fs -put /test.txt /user/testDirectory

如果我的文件在单独的驱动器中,则会收到错误'/test.txt': No such file or directory。我尝试了/C/pathOfFile/test.txt的各种变体,但都无济于事,因此,简而言之,我需要知道如何访问另一个目录中的本地文件,尤其是关于-put命令的情况。对于这个可能是业余问题的帮助,将不胜感激。

2 个答案:

答案 0 :(得分:0)

根据您的问题,我假设您已在Windows安装的虚拟机(VM)中安装了Hadoop。如果此假设不正确,请提供更多细节。问题是您的VM将驱动器D:视为本地目录,-put和-copyFromLocal可以在其中查看文件。 C:目前对这些命令不可见。

您需要将驱动器C:挂载到您的VM,以使其文件可在Hadoop本地使用。根据您的VM,有一些指南。为了避免误操作任何Windows安装文件,我建议您谨慎使用。

答案 1 :(得分:0)

如果您当前的cmd会话位于D:\中,那么您的命令将查看该驱动器的根目录

您可以尝试为路径加上前缀

file:/C:/test.txt

否则,先cd到包含文件的路径,然后再-put test.txt-put .\test.txt

注意:除非您将fs.defaultFS实际设置为file:/D:/hdfs

,否则HDFS不会知道C和D之间的区别。