hadoop fs -put命令

时间:2013-08-28 10:07:06

标签: shell hadoop hdfs put

我使用Cloudera CDH存储库在CentOS上构建了单节点Hadoop环境。当我想将本地文件复制到HDFS时,我使用了命令:

sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /

但结果让我很沮丧:

put: '/root/MyHadoop/file1.txt': No such file or directory

我确定这个文件确实存在。

请帮帮我,谢谢!

4 个答案:

答案 0 :(得分:25)

作为用户hdfs,您是否拥有/root/(在您当地的硬盘中)的访问权限?通常你没有。 您必须将file1.txt复制到hdfs用户具有读权限的位置。

尝试:

cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
sudo -u hdfs hadoop fs -put /tmp/file1.txt /

---编辑:

看看the cleaner roman-nikitchenko's answer bellow

答案 1 :(得分:17)

我有同样的情况,这是我的解决方案:

 HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /

优点:

  1. 您不需要sudo
  2. 您根本不需要实际适当的本地用户'hdfs'。
  3. 由于之前的观点,您无需复制任何内容或更改权限。

答案 2 :(得分:6)

尝试使用以下代码在HDFS中创建目录:$ hadoop fs -mkdir your_dir 然后把它放进去$ hadoop fs -put /root/MyHadoop/file1.txt your_dir

答案 3 :(得分:0)

以下是使用python脚本将df直接写入hdfs文件系统的命令:

df.write.save('path', format='parquet', mode='append')

模式可以追加|覆盖

如果要使用shell放入hdfs,请使用以下命令: hdfs dfs -put / local_file_path_location / hadoop_file_path_location

然后您可以在localhost:50070 UI上进行验证