52

有什么方法可以覆盖现有文件,同时应对HDFS使用:

hadoop fs -copyToLocal <HDFS PATH> <local path>
4

8 回答 8

47
fs -copyFromLocal -f $LOCAL_MOUNT_SRC_PATH/yourfilename.txt your_hdfs_file-path

所以-f选项可以为您解决问题。

它也适用于-copyToLocal

于 2014-07-25T16:33:18.870 回答
14

您可以先删除,然后再写入。

hadoop fs -rmr <path>删除 hdfs 中给定路径下的所有内容,包括路径本身

rm -rf <path>在本地文件系统中删除。

确保目录中没有其他文件。

于 2013-05-10T14:54:37.277 回答
7

我使用了下面的命令,它有帮助:

hadoop fs -put -f <<local path>> <<hdfs>>

但从放置文档:

将单个 src 或多个 src 从本地文件系统复制到目标文件系统。

于 2015-01-07T08:54:47.093 回答
5

get任何一个命令 ( / )都没有强制选项copytolocal

以下是三个选项:

  1. 使用rm命令删除 localmachine 上的文件并使用copyToLocal/get.

  2. 将本地文件重命名为新名称,以便您可以拥有与集群上同名的文件。为此使用mv命令并使用get/copyTolocal命令。

  3. 在集群本身上重命名文件并使用 copytolocal

    hadoop fs -mv [oldpath] [newpath]
    hadoop fs -copytolocal [newpath] .
    
于 2013-05-10T10:58:26.827 回答
5

-f选项成功了

例子:

bin>hdfs dfs -put -f D:\DEV\hadoopsampledata\mydata.json /input
于 2017-06-23T02:30:31.670 回答
2

您可以尝试使用带有 -update 的 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
于 2016-06-16T08:10:11.733 回答
-1

你可以试试这个:

bin/hadoop fs -rm /path_of_the_file | grep "0" | bin/hadoop fs -put ~/input_path /output_path
于 2013-05-10T15:34:05.153 回答
-3

-f 对我有用。

hdfs dfs -copyFromLocal -f [LOCALFILEPATH] [HDFSFILEPAHT]

于 2016-08-12T02:55:58.643 回答