我从 Fedora 命令终端得到以下代码:
[root@localhost python_code]# pwd
/root/python_code
[root@localhost python_code]# cd ..
[root@localhost ~]# ls
anaconda-ks.cfg python_code
[root@localhost ~]# cd /usr/local
[root@localhost local]# ls
bin games hadoop-2.6.4.tar.gz input lib libexec sbin src
etc hadoop include jdk1.8.0_77 lib64 output share
[root@localhost local]# cd hadoop
[root@localhost hadoop]# ls
bin include libexec logs README.txt share
etc lib LICENSE.txt NOTICE.txt sbin
[root@localhost hadoop]# pwd
/usr/local/hadoop
[root@localhost hadoop]# bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv /usr/local/hadoop/input_localuser
copyFromLocal: `/usr/local/hadoop/input_localuser': No such file or directory
[root@localhost hadoop]# ls
bin include libexec logs README.txt share
etc lib LICENSE.txt NOTICE.txt sbin
[root@localhost hadoop]# mkdir input_localuser
[root@localhost hadoop]# ls
bin include lib LICENSE.txt NOTICE.txt sbin
etc input_localuser libexec logs README.txt share
[root@localhost hadoop]# bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv /usr/local/hadoop/input_localuser
copyFromLocal: `/usr/local/hadoop/input_localuser': No such file or directory
[root@localhost hadoop]# bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv home/usr/local/hadoop/input_localuser
copyFromLocal: `home/usr/local/hadoop/input_localuser': No such file or directory
[root@localhost hadoop]# pwd
/usr/local/hadoop
[root@localhost hadoop]# ls
bin include lib LICENSE.txt NOTICE.txt sbin
etc input_localuser libexec logs README.txt share
[root@localhost hadoop]#
更多代码:
[root@localhost hadoop]# cd ~
[root@localhost ~]# ls
anaconda-ks.cfg python_code
[root@localhost ~]# cd python_code
[root@localhost python_code]# ls
data_generator.py input_data.csv mapper_project.py reducer_project.py
[root@localhost python_code]#
如上所示,我的python_code
目录位于根文件夹中,我试图将文件从该文件夹复制到input_userlocal
hadoop 内的目录。
但以下命令会引发错误:
bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv /usr/local/hadoop/input_localuser
copyFromLocal: `/usr/local/hadoop/input_localuser': No such file or directory
答案1
首先,您的 Hadoop 命令可能不正确。
dfs -copyFromLocal
需要两个参数,一个本地文件(如您所指定),然后是一个 Hadoop URI。不像你给的那样,文件路径。
从 Hadoop 网页来看,
所有 FS shell 命令都采用路径 URI 作为参数。 URI 格式为scheme://authority/path。对于 HDFS,方案是 hdfs,对于本地 FS,方案是 file。方案和权限是可选的。如果未指定,则使用配置中指定的默认方案。 HDFS 文件或目录(例如 /parent/child)可以指定为 hdfs://namenodehost/parent/child 或简单地指定为 /parent/child(假设您的配置设置为指向 hdfs://namenodehost)。
FS shell 中的大多数命令的行为类似于相应的 Unix 命令。每个命令都描述了差异。错误信息发送到 stderr,输出发送到 stdout。
我不知道您的 Hadoop 实例的结构,但您的目标需要是基于该结构的名称,而不仅仅是文件系统。
其次,你没有向我们展示上面的内容/root/python_code/
,你确定input_data.csv
存在吗?