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>
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
.
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.
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.
-f
option a fait l'affaire
exemple:
bin>hdfs dfs -put -f D:\DEV\hadoopsampledata\mydata.json /input
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] .
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