我在centos上使用cloudera cdh存储库构建了一个单节点hadoop环境。当我想将本地文件复制到hdfs时,我使用了以下命令:
sudo -u hdfs hadoop fs -put /root/MyHadoop/file1.txt /
但是,结果让我很沮丧:
put: '/root/MyHadoop/file1.txt': No such file or directory
我肯定这个文件确实存在。请帮帮我,谢谢!
wz3gfoph1#
下面是一个用python脚本将df直接写入hdfs文件系统的命令:
df.write.save('path', format='parquet', mode='append')
模式可以附加|覆盖如果您想使用shell将文件放入hdfs,请使用以下命令:hdfs dfs-put/local\u file\u path\u location/hadoop\u file\u path\u location你可以去看看localhost:50070 ui 供核实
3bygqnnd2#
尝试使用以下命令在hdfs中创建目录: $ hadoop fs -mkdir your_dir 然后把它放进去 $ hadoop fs -put /root/MyHadoop/file1.txt your_dir
$ hadoop fs -mkdir your_dir
$ hadoop fs -put /root/MyHadoop/file1.txt your_dir
axr492tv3#
作为用户 hdfs ,您有访问权限吗 /root/ (在本地硬盘中)?。通常你不会。你必须复制 file1.txt 去一个地方 hdfs 用户在尝试将其复制到hdfs之前具有读取权限。尝试:
hdfs
/root/
file1.txt
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 /
---编辑:看看清洁工罗曼·尼基琴科的回答。
nimxete24#
我也遇到过同样的情况,下面是我的解决方案:
HADOOP_USER_NAME=hdfs hdfs fs -put /root/MyHadoop/file1.txt /
优势:你不需要 sudo .实际上,您根本不需要合适的本地用户“hdfs”。您不需要复制任何内容,也不需要因为前面的几点而更改权限。
sudo
4条答案
按热度按时间wz3gfoph1#
下面是一个用python脚本将df直接写入hdfs文件系统的命令:
模式可以附加|覆盖
如果您想使用shell将文件放入hdfs,请使用以下命令:hdfs dfs-put/local\u file\u path\u location/hadoop\u file\u path\u location
你可以去看看localhost:50070 ui 供核实
3bygqnnd2#
尝试使用以下命令在hdfs中创建目录:
$ hadoop fs -mkdir your_dir
然后把它放进去$ hadoop fs -put /root/MyHadoop/file1.txt your_dir
axr492tv3#
作为用户
hdfs
,您有访问权限吗/root/
(在本地硬盘中)?。通常你不会。你必须复制file1.txt
去一个地方hdfs
用户在尝试将其复制到hdfs之前具有读取权限。尝试:
---编辑:
看看清洁工罗曼·尼基琴科的回答。
nimxete24#
我也遇到过同样的情况,下面是我的解决方案:
优势:
你不需要
sudo
.实际上,您根本不需要合适的本地用户“hdfs”。
您不需要复制任何内容,也不需要因为前面的几点而更改权限。