如何使用hadoop fs -copyToLocal命令覆盖现有文件

时间:2013-05-08 09:50:58

标签: hadoop

使用:

HDFS复制时,我们是否可以覆盖现有文件?
hadoop fs -copyToLocal <HDFS PATH> <local path>

7 个答案:

答案 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]