Перезаписать адресат с помощью hadoop fs mv? - PullRequest
0 голосов
/ 22 мая 2018

Выполнение быстрого теста вида

testfunc() {
    hadoop fs -rm /test001.txt
    hadoop fs -touchz /test001.txt
    hadoop fs -setfattr -n trusted.testfield -v $(date +"%T") /test001.txt
    hadoop fs -mv /test001.txt /tmp/.
    hadoop fs -getfattr -d /tmp/test001.txt
}
testfunc()
testfunc()

, в результате которого выводится

... during second function call
mv: '/tmp/test001.txt': File exists
# file: /tmp/test001.txt
trusted.testfield="<old timestamp from first call>"
...

, похоже (в отличие от linux) команда hadoop fs mv не перезаписывает файл назначенияесли уже существует.Есть ли способ принудительно перезаписать поведение (я полагаю, что я мог бы проверять и удалять адресата каждый раз, но что-то вроде hadoop mv -overwrite <source> <dest> было бы более удобным для моих целей)?

** Кстати, если янеправильно интерпретирую результаты или поведение кажется неправильным, дайте мне знать (так как я предполагал, что перезапись была поведением по умолчанию, и пишу этот вопрос , потому что я был удивлен, что это не так).

1 Ответ

0 голосов
/ 27 мая 2018

Я думаю, что нет прямой возможности переместить и перезаписать файлы из одного места HDFS в другое, хотя копирование (команда cp) имеет возможность принудительно (используя -f).В документации Apache Hadoop (https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html), говорится, что Hadoop разработан для использования модели «один раз для чтения много», которая ограничивает перезапись.

...