Как перезаписать существующие файлы с помощью команды hadoop fs -copyToLocal

Можно ли каким-либо образом перезаписать существующие файлы, а при использовании HDFS:

hadoop fs -copyToLocal <hdfs path=""> </hdfs>
8 ответов

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

Так что -f вариант делает трюк для вас.

Он также работает и для -copyToLocal.


Вы можете сначала удалить, а затем написать.

hadoop fs -rmr удаляет все по заданному пути в hdfs, включая сам путь

rm -rf удаляется в локальной файловой системе.

Убедитесь, что в каталоге нет другого файла.


Я использовал приведенную ниже команду и помог:

hadoop fs -put -f <<local path="">> <<hdfs>>
</hdfs></local>

но из put docs:

Скопируйте одиночный src или несколько srcs из локальной файловой системы в конечной файловой системы.


Опция Force отсутствует для любой из команд (get/copytolocal).

Ниже приведены некоторые параметры

option 1 .

Удалите файл на localmachine с помощью rm.

и используйте copyToLocal/get

option 2

или переименуйте локальный файл в новое имя, чтобы вы могли иметь файл с тем же именем, что и на кластере. используйте mv для этого.

И используйте команду get/copyTolocal

option 3

переименуйте файл там в самом кластере и используйте copytolocal

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


Вы можете попробовать с 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


-f сделал трюк

Пример:

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


Я работаю.

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


Вы можете попробовать следующее:

bin/hadoop fs -rm /path_of_the_file | grep "0" | bin/hadoop fs -put ~/input_path /output_path

licensed under cc by-sa 3.0 with attribution.