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]#
上記のように、私のディレクトリはルートフォルダにあり、そのフォルダのファイルをhadoop内のディレクトリpython_code
にコピーしようとしています。input_userlocal
ただし、次のコマンドはエラーを発生させます。
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
2つのパラメータ、つまりローカルファイル(指定どおり)とHadoop URIが必要です。あなたが与えたファイルパスではありません。
Hadoop Webページから
すべてのFSシェルコマンドは、パスURIをパラメータとして使用します。 URI形式はchem://authority/pathです。 HDFSの場合、スキームはhdfs、ローカルFSの場合、スキームはファイルです。スキームと権限はオプションです。指定しない場合、設定で指定されたデフォルトスキームが使用されます。 HDFS ファイルまたはディレクトリ (/parent/child など) は、hdfs://namenodehost/parent/child として指定するか、単に /parent/child として指定できます (設定が hdfs://namenodehost を指すように設定されていると仮定します) )。
FS シェルのほとんどのコマンドは、対応する Unix コマンドのように動作します。各コマンドの違いについて説明します。エラーメッセージはstderrに送信され、出力はstdoutに送信されます。
Hadoopインスタンスの構造はわかりませんが、ターゲットはファイルシステムだけでなく構造の名前に基づいている必要があります。
第二に、上記を示していません/root/python_code/
。それが存在すると確信していますかinput_data.csv
?