Bash-如何检查文件是否已上载到hdfs?

Bash-如何检查文件是否已上载到hdfs?,bash,scala,hadoop,apache-spark,hdfs,Bash,Scala,Hadoop,Apache Spark,Hdfs,我。现在,我尝试将一个文件从本地文件系统上载到tmp文件夹,如下所示: hdfs dfs -put opt/ibm/labfiles/README.md /user/root/input/tmp 但我得到的信息是: put: '/user/root/input/tmp': File exists 我不明白的是:当我运行测试时,如果文件在那里,我看不到列出的文件,但是文件夹有文件的大小(4811位)。同样,tmp甚至可能不是一个文件夹: 如何查看tmp是否为文件夹 如何查看README.m

我。现在,我尝试将一个文件从本地文件系统上载到tmp文件夹,如下所示:

hdfs dfs -put opt/ibm/labfiles/README.md /user/root/input/tmp
但我得到的信息是:

put: '/user/root/input/tmp': File exists
我不明白的是:当我运行测试时,如果文件在那里,我看不到列出的文件,但是文件夹有文件的大小(4811位)。同样,tmp甚至可能不是一个文件夹:

  • 如何查看tmp是否为文件夹
  • 如何查看README.md文件是否在tmp中,或者如果不在tmp中,如何将其放在tmp中
  • 从这里启动SparkShell时,我无法访问该文件(输入路径不存在)。为什么?

根据
tmp
是一个文件。如果它是一个目录,它会显示
drw\u r\u r\u
注意
d
,你的没有,所以它是一个文件

你应该跑:


hdfs-dfs-put opt/ibm/labfiles/README.md/user/root/input/tmp/README.md
根据
tmp
是一个文件。如果它是一个目录,它会显示
drw\u r\u r\u
注意
d
,你的没有,所以它是一个文件

你应该跑:


hdfs-dfs-put opt/ibm/labfiles/README.md/user/root/input/tmp/README.md

如果tmp是一个已经存在的目录,您可以直接写入它,而不需要文件名:

hdfs dfs -put opt/ibm/labfiles/README.md /user/root/input/tmp/

在末尾添加额外的'/'。如果最后您设置了'/',它将写入目录,否则命令将尝试创建一个文件,文件名位于路径中最后一个'/'符号之后。如果tmp是一个已经存在的目录,您可以直接写入,而忽略文件名:

hdfs dfs -put opt/ibm/labfiles/README.md /user/root/input/tmp/

在末尾添加额外的'/'。如果最后设置了'/',它将写入目录,否则命令将尝试创建一个文件,文件名位于路径中最后一个'/'符号之后

为什么要使用
hadoop fs
而不是
hdfs dfs
?@daemon12感谢您的提问,我刚刚检查了一下,它实际上是被弃用的
hadoop dfs
。我将从答案中删除这一部分。为什么要使用
hadoop fs
而不是
hdfs dfs
?@daemon12感谢您的提问,我刚刚检查了一下,它的
hadoop dfs
实际上已被弃用。我将从答案中删除该部分。