it-swarm.com.de

Überschreiben der vorhandenen Dateien mit dem Befehl hadoop fs -copyToLocal

Gibt es eine Möglichkeit, vorhandene Dateien beim Kopieren von HDFS zu überschreiben: 

hadoop fs -copyToLocal <HDFS PATH> <local path>
42
hjamali52
fs -copyFromLocal -f $LOCAL_MOUNT_SRC_PATH/yourfilename.txt your_hdfs_file-path

Die -f-Option macht also den Trick für Sie.

Es funktioniert auch für -copyToLocal.

39
Arijit Sen

Sie können zuerst löschen und dann schreiben. 

hadoop fs -rmr <path> entfernt alles unter dem angegebenen Pfad in hdfs einschließlich des Pfads

rm -rf <path> wird im lokalen Dateisystem entfernt. 

Stellen Sie sicher, dass sich keine andere Datei im Verzeichnis befindet.

12
smttsp

Ich habe den folgenden Befehl verwendet und es hat geholfen:

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

aber von put docs:

Kopieren Sie eine oder mehrere Srcs aus dem lokalen Dateisystem in die. Zieldateisystem.

8
Sohan

-f Option hat den Trick gemacht

beispiel:

bin>hdfs dfs -put -f D:\DEV\hadoopsampledata\mydata.json /input
1
tthreetorch

Die Option force ist für keinen der Befehle vorhanden (get/copytolocal).

Nachfolgend sind einige Optionen aufgeführt

option 1 .

Entfernen Sie die Datei auf der lokalen Maschine mit dem Befehl rm .

und benutze copyToLocal/get

option 2

oder benennen Sie Ihre lokale Datei in einen neuen Namen um, so dass die Datei denselben Namen wie in Cluster haben kann Verwenden Sie dazu den Befehl mv .

Und verwenden Sie den Befehl get/copyTolocal

option 3

benennen Sie die Datei dort im Cluster selbst um und verwenden Sie copytolocal

hadoop fs -mv [oldpath] [newpath]
hadoop fs -copytolocal [newpath] .
1

Sie können es mit distcp mit -update versuchen. Der Hauptvorteil ist, dass das Ziel nur dann aktualisiert wird, wenn die Datei geändert wird.

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
0
sterin jacob