hdfs dfs -count
команда дает следующую информацию:
- Количество каталогов
- Количество файлов
- Content размер
- имя файла
Для например, я получаю следующий вывод на моей /tmp/
папке:
CMD> hdfs dfs -count /tmp/
14 33 193414280395 /tmp
Используя эту команду, вы не можете получить счетчик .snappy
файлов, как это:
CMD> hdfs dfs -count -v /tmp/*.snappy
вы получите выход например:
DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
0 1 4623 /tmp/Links.txt.snappy
0 1 190939 /tmp/inclusions_00000005.snappy
Чтобы получить счет o е .snappy
файлы, вы также можете выполнить следующие команды:
Получить количество .snappy
файлов непосредственно в папку:
Просто запустите hadoop fs -ls
команду. Напр. чтобы получить число .snappy
файлов в папке /user/data
, просто выполнить:
hadoop fs -ls /user/data/*.snappy | wc -l
Рекурсивных получить количество всех .snappy
файлов в папке:
hadoop fsck
Выполнить команду. Для например:
hadoop fsck /user/data/ -files | grep ".snappy" | wc -l
EDIT: Все файлы больше чем 30 MB Если вы хотите, чтобы найти все файлы с размером больше или равна 30 МБ (30 * 1024 * 1024 = 31457280) , вам необходимо выполнить следующую команду:
hadoop fsck /user/data -files | grep ".snappy" | gawk '{if ($2 ~ /^[0-9]+$/ && $2>=31457280) print $1,$2;}'
Это будет печатать $ 1 как имя файла и $ 2 как размер файла.
Если вы хотите, количество файлов, то просто конвейер к wc -l
, как показано ниже:
hadoop fsck /user/data -files | grep ".snappy" | gawk '{if ($2 ~ /^[0-9]+$/ && $2>=31457280) print $1,$2;}' | wc -l
Манжа, спасибо много, и она работала – Naveen
Есть ли способ, чтобы проверить выше требование к файлам, меньше 30Mb – Naveen
[root @ user ~] # hadoop fsck/user/data/-files | grep ".snappy" | gawk "{if ($ 2> 1024) print $ 1, $ 2;}" gawk: {if (> 1024) print,;} gawk:^ошибка синтаксиса DEPRECATED: использование этого скрипта для выполнения команды hdfs устарело. Вместо этого используйте для этого команду hdfs. Подключение к namenode через https: // ip: port – Naveen