2016-01-11 3 views
1

Я пытаюсь подсчитать файлы, сжатые в папке Hdfs. Я использую hdfs dfs -count/user/data | grep .snappy --it ничего не показывает grep .snappy | HDFS ДФС -count/пользователь/данные --Оно показывает все файлы (даже которые не .snappy)Подсчет количества сжатых файлов в hdfs

Могу ли я получить правильную команду для подсчета .snappy файлы в этом/пользователь/HDFS данные путь

ответ

2

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 
+0

Манжа, спасибо много, и она работала – Naveen

+0

Есть ли способ, чтобы проверить выше требование к файлам, меньше 30Mb – Naveen

+0

[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

Смежные вопросы