我使用 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
我确定这个文件确实存在。
请帮助我,谢谢!
作为用户hdfs
,您是否有权访问/root/
(在您的本地硬盘中)?通常你不会。在尝试将其复制到 HDFS 之前,您必须复制file1.txt
到本地用户具有读取权限的位置。hdfs
尝试:
cp /root/MyHadoop/file1.txt /tmp
chown hdfs:hdfs /tmp/file1.txt
# older versions of Hadoop
sudo -u hdfs hadoop fs -put /tmp/file1.txt /
# newer versions of Hadoop
sudo -u hdfs hdfs dfs -put /tmp/file1.txt /
- - 编辑:
我有同样的情况,这是我的解决方案:
HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
好处:
sudo
。尝试通过 usig: 在 HDFS 中创建一个目录,$ hadoop fs -mkdir your_dir
然后将其放入其中$ hadoop fs -put /root/MyHadoop/file1.txt your_dir
这是在 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 进行验证