2016-08-09 4 views
3

Как найти количество подкаталогов в указанном каталоге в HDFS?Количество подкаталогов в каталоге?


Когда я hadoop fs -ls /mydir/, я получаю ошибку пространства кучи Java, поскольку каталог является слишком большим, но то, что я заинтересован в это число подкаталогов в этом каталоге. Я пробовал:

[email protected] ~]$ hadoop fs -find /mydir/ -maxdepth 1 -type d -print| wc -l 
find: Unexpected argument: -maxdepth 
0 

Я знаю, что каталог не пуст, таким образом, 0 не является правильным:

[[email protected] ~]$ hadoop fs -du -s -h /mydir 
737.5 G /mydir 
+0

Я не понимаю, как команда 'ls' вызовет ошибку пространства кучи. Это должно быть просто список каталогов. –

+0

И я думаю, что только путь и выражение действительны для ['-find'] (http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/FileSystemShell.html #find), поэтому вы получили 0 - вы получили сообщение об ошибке. –

+0

Подобный вопрос для файлов здесь http://stackoverflow.com/questions/11342400/how-to-list-all-files-in-a-directory-and-its-subdirectories-in-hadoop-hdfs#11345280 и здесь http : //stackoverflow.com/questions/37903445/how-to-enumerate-files-in-hdfs-directory? rq = 1 –

ответ

1

Команда использования является: hdfs dfs -ls -R /path/to/mydir/ | grep "^d" | wc -l

Но это также даст вам ошибка java.lang.OutOfMemoryError: Java heap space. Для того, чтобы избежать ошибки, необходимо увеличить Java пространство кучи и выполнить ту же команду, как:

export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Xmx5g", а затем

hdfs dfs -ls -R /path/to/mydir/ | grep "^d" | wc -l ..... # Для всех подкаталогов

ИЛИ

hdfs dfs -ls /path/to/mydir/ | grep "^d" | wc -l ..... # Для maxdepth = 1

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

  • Нет связанных вопросов^_^