web-dev-qa-db-fra.com

Comment écraser les fichiers existants à l'aide de la commande hadoop fs -copyToLocal

Existe-t-il un moyen de remplacer les fichiers existants lors de la copie de HDFS en utilisant 

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

Donc, l'option -f fait le tour pour vous.

Cela fonctionne aussi pour -copyToLocal.

39
Arijit Sen

Vous pouvez d'abord supprimer, puis écrire. 

hadoop fs -rmr <path> supprime tout ce qui se trouve sous le chemin indiqué dans hdfs, y compris le chemin

rm -rf <path> supprime dans le système de fichiers local. 

Assurez-vous qu'il n'y a pas d'autre fichier dans le répertoire.

12
smttsp

J'ai utilisé la commande ci-dessous et cela a aidé:

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

mais de put docs:

Copiez une ou plusieurs sources du système de fichiers local vers le fichier système de fichiers de destination.

8
Sohan

-f option a fait l'affaire

exemple:

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

L'option Forcer n'est présente dans aucune des commandes (get/copytolocal).

Ci-dessous quelques options

option 1 .

Supprimez le fichier sur machine locale avec la commande rm .

et utilisez copyToLocal/get

option 2

ou renommez votre fichier local en nouveau nom pour que le fichier porte le même nom que sur le cluster utilisez la commande mv pour cela.

Et utilisez la commande get/copyTolocal

option 3

renommer le fichier là sur le cluster lui-même et utiliser copytolocal

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

Vous pouvez essayer avec distcp avec -update. Le principal avantage est que la cible ne sera mise à jour que lorsque le fichier aura été modifié.

hadoop distcp -update fichier: // 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