Я ищу команду в hadoop 2.x для удаления файлов с нулевыми байтами в hdfs. Может ли кто-нибудь, пожалуйста, дайте мне знать соответствующую команду. Я пытаюсь найти файлы с нулевыми байтами в hdfs и удалить их из каталога.
Hadoop удалить файл, который имеет нулевой байт
Ответы (2)
for f in $(hdfs dfs -ls -R / | awk '$1 !~ /^d/ && $5 == "0" { print $8 }'); do hdfs dfs -rm "$f"; done
Шаг за шагом:
hdfs dfs -ls -R /
- рекурсивно перечислить все файлы в HDFS
awk '$1 !~ /^d/ && $5 == "0" { print $8 }')
- вывести полный путь к тем, которые не являются каталогами и имеют размер 0
for f in $(...); do hdfs dfs -rm "$f"; done
- итеративно удалить
person
Kombajn zbożowy
schedule
22.11.2016
Основываясь на ответе Комбайна, если у вас есть много файлов для удаления, будет быстрее использовать xargs
. Это позволит вам удалить несколько файлов за одну команду hdfs
, что довольно дорого.
hdfs dfs -ls -R / | awk '$1 !~ /^d/ && $5 == "0" { print $8 }' | xargs -n100 hdfs dfs -rm
person
highlycaffeinated
schedule
01.09.2017
@ylabidi, чтобы расширить то, что описал Комбайн, он печатает поле 8 (имя файла) для строк из
ls
, которые не начинаются с «d» (каталоги) и где 5-е поле (размер) не равно 0
- person highlycaffeinated; 15.02.2018