У меня есть следующий код из командного терминала 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
Во-первых, ваша команда Hadoop, скорее всего, неверна.
dfs -copyFromLocal
ожидает два параметра: локальный файл (как вы указали) и затем URI Hadoop. Не такой, как вы его указали, путь к файлу.
На веб-страницах Hadoop,
Все команды оболочки FS принимают URI пути в качестве аргументов. Формат URI: схема: // полномочия / путь.Для HDFS схема - это hdfs, а для Local FS схема - это файл. Схема и полномочия не являются обязательными. Если не указан, используется схема по умолчанию, указанная в конфигурации . Файл или каталог HDFS, например / parent / child, можно указать как hdfs: // namenodehost / parent / child или просто как / parent / child (при условии , что ваша конфигурация настроена на на hdfs: // namenodehost).
Большинство команд в оболочке FS ведут себя как соответствующие команды Unix. Различия описаны для каждой из команд. Информация об ошибке отправляется на stderr, а вывод отправляется на stdout.
Я не знаю структуру вашего экземпляра Hadoop, но имя вашей цели должно быть основано на этом, а не просто на файловой системе.
Во-вторых, вы не показываете нам над содержимым / root / python_code /
, вы уверены, что input_data.csv
существует?