我正在尝试使用以下命令将文件复制到 hdfs。文件名是 googlebooks-eng....等等....
当我尝试在 hdfs 中列出文件时,我没有看到列出的文件名。实际文件名是什么?
hadoop-user@hadoop-desk:~/hadoop$ bin/hadoop dfs -put /home/hadoop-user/googlebooks-eng-all-1gram-20120701-0 /user/prema
hadoop-user@hadoop-desk:~/hadoop$ bin/hadoop dfs -ls /user/prema
Found 1 items
-rw-r--r-- 1 hadoop-user supergroup 192403080 2014-11-19 02:43 /user/prema
最佳答案
几乎所有的 hadoop dfs 实用程序都遵循 unix 风格。 hadoop dfs -put 的语法是
hadoop dfs -put <source_file> <destination>
.这里的 destination 可以是目录或文件。在您的情况下/user 目录存在但目录 prema 不存在,因此当您将文件从本地复制到 hdfs 时,prema 将用作文件名。 googlebooks-eng-all-1gram-20120701-0
和 /user/prema
是同一个文件。
如果你想持久化文件名。复制前需要先删除已有文件,新建目录/user/prema;
bin/hadoop dfs -rm /user/prema;
bin/hadoop dfs -mkdir /user/prema;
bin/hadoop dfs -put /home/hadoop-user/googlebooks-eng-all-1gram-20120701-0 /user/prema
现在您应该能够在 hdfs 目录/user/prema 中看到该文件
bin/hadoop dfs -rm /user/prema
关于Hadoop hdfs 无法定位文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023516/