使用:
从HDFS
复制时,我们是否可以覆盖现有文件?
hadoop fs -copyToLocal <HDFS PATH> <local path>
答案 0 :(得分:40)
fs -copyFromLocal -f $LOCAL_MOUNT_SRC_PATH/yourfilename.txt your_hdfs_file-path
所以-f
选项可以帮到你。
它也适用于-copyToLocal
。
答案 1 :(得分:12)
您可以先删除,然后再写。
hadoop fs -rmr <path>
删除hdfs中给定路径下的所有内容,包括路径本身
rm -rf <path>
在本地文件系统中删除。
确保目录中没有其他文件。
答案 2 :(得分:8)
我使用了下面的命令,它有所帮助:
hadoop fs -put -f <<local path>> <<hdfs>>
但是来自put docs:
将单个src或多个srcs从本地文件系统复制到 目标文件系统。
答案 3 :(得分:1)
任何一个命令(get
/ copytolocal
)都没有强制选项。
以下是一些选项
option 1 .
使用rm命令删除localmachine上的文件。
并使用copyToLocal/get
option 2
或将本地文件重命名为新名称,以便您可以使该文件与群集上的名称相同。 使用mv命令。
并使用get/copyTolocal
命令
option 3
在群集本身重命名该文件并使用copytolocal
hadoop fs -mv [oldpath] [newpath]
hadoop fs -copytolocal [newpath] .
答案 4 :(得分:1)
您可以使用-cpdate尝试使用distcp。主要优点是只有在文件发生变化时才会更新目标。
hadoop distcp -update file:// source hdfs:// namenode / target
hadoop distcp -update file:///home/hduser/pigSample/labfiles/SampleData/books.csv hdfs://10.184.37.158:9000/yesB
答案 5 :(得分:-1)
你可以试试这个:
bin/hadoop fs -rm /path_of_the_file | grep "0" | bin/hadoop fs -put ~/input_path /output_path
答案 6 :(得分:-3)
-f工作我。
hdfs dfs -copyFromLocal -f [LOCALFILEPATH] [HDFSFILEPAHT]