我是Apache Hadoop的新手,我正在尝试将一个简单的文本文件从我的本地目录复制到Hadoop上的HDFS,该HDFS已启动并运行。但是,Hadoop 安装在 D: 中,而我的文件是 C: 中。
如果我在cmd中使用-put
或copyFromLocal
命令与上述驱动器中的文件一起使用,则不允许我这样做。但是,如果我将文本文件放在同一个 D: 驱动器中,该文件将正确上传到 Hadoop,并且可以在 Hadoop 本地主机上看到。在同一驱动器中处理文件和 Hadoop 的代码如下所示:
hadoop fs -put /test.txt /user/testDirectory
如果我的文件在单独的驱动器中,则会收到错误'/test.txt': No such file or directory
。我已经尝试了/C/pathOfFile/test.txt
的变化,但无济于事,所以简而言之,我需要知道如何访问另一个目录中的本地文件,特别是关于-put
命令。对这个可能是业余问题的任何帮助将不胜感激。
如果当前 cmd 会话位于 D:\ 中,则命令将查看该驱动器的根目录
您可以尝试为路径添加前缀
file:/C:/test.txt
否则,请先cd
包含文件的路径,然后-put test.txt
或-put .test.txt
注意:HDFS不知道C和D之间的区别,除非你实际将fs.defaultFS设置为类似file:/D:/hdfs
从你的问题中,我假设你已经在Windows安装的虚拟机(VM(中安装了Hadoop。如果这一假设不正确,请提供更多详情。问题是您的 VM 将驱动器 D: 视为本地目录,-put 和 -copyFromLocal 可以在其中查看文件。C: 当前对这些命令不可见。
您需要将驱动器 C: 挂载到您的 VM,以便使其文件可作为 Hadoop 的本地文件使用。那里有指南,具体取决于你的 VM。我建议在它的时候小心,以免错误处理任何Windows安装文件。