Можно ли каким-либо образом перезаписать существующие файлы, а при использовании HDFS
:
hadoop fs -copyToLocal <HDFS PATH> <local path>
Можно ли каким-либо образом перезаписать существующие файлы, а при использовании HDFS
:
hadoop fs -copyToLocal <HDFS PATH> <local path>
fs -copyFromLocal -f $LOCAL_MOUNT_SRC_PATH/yourfilename.txt your_hdfs_file-path
Так что -f
вариант делает трюк для вас.
Он также работает и для -copyToLocal
.
Вы можете сначала удалить, а затем написать.
hadoop fs -rmr <path>
удаляет все по заданному пути в hdfs, включая сам путь
rm -rf <path>
удаляется в локальной файловой системе.
Убедитесь, что в каталоге нет другого файла.
Я использовал приведенную ниже команду и помог:
hadoop fs -put -f <<local path>> <<hdfs>>
но из put docs:
Скопируйте одиночный src или несколько srcs из локальной файловой системы в конечной файловой системы.
Параметр Force не доступен ни для одной из команд (get
/copytolocal
).
Ниже приведены три варианта:
Удалите файл на локальной машине с помощью команды rm и используйте copyToLocal/get
.
Переименуйте ваш локальный файл в новое имя, чтобы у вас был файл с тем же именем, что и в кластере. используйте для этого команду mv и команду get/copyTolocal
.
Переименуйте файл там на самом кластере и используйте copytolocal
hadoop fs -mv [oldpath] [newpath]
hadoop fs -copytolocal [newpath] .
-f
сделал трюк
Пример:
bin>hdfs dfs -put -f D:\DEV\hadoopsampledata\mydata.json /input
Вы можете попробовать с distcp с -update. Главное преимущество - это обновление цели только при изменении файла.
hasoop distcp -update файл://источник hdfs://namenode/target
hadoop distcp -update file:///home/hduser/pigSample/labfiles/SampleData/books.csv hdfs://10.184.37.158:9000/yesB
Вы можете попробовать следующее:
bin/hadoop fs -rm /path_of_the_file | grep "0" | bin/hadoop fs -put ~/input_path /output_path
Я работаю.
hdfs dfs -copyFromLocal -f [LOCALFILEPATH] [HDFSFILEPAHT]