我使用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
我确定这个文件确实存在。
请帮帮我,谢谢!
答案 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 /
---编辑:
答案 1 :(得分:17)
我有同样的情况,这是我的解决方案:
HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
优点:
sudo
。答案 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上进行验证