目录中的子目录数量?

如何在HDFS中查找指定目录下的子目录数量?


当我做hadoop fs -ls /mydir/ ,我得到一个Java堆空间的错误,因为目录太大,但我感兴趣的是该目录中的子目录的数量。 我试过了:

 gsamaras@gwta3000 ~]$ hadoop fs -find /mydir/ -maxdepth 1 -type d -print| wc -l find: Unexpected argument: -maxdepth 0 

我知道该目录不是空的,因此0是不正确的:

 [gsamaras@gwta3000 ~]$ hadoop fs -du -s -h /mydir 737.5 G /mydir 

要使用的命令是: hdfs dfs -ls -R /path/to/mydir/ | grep "^d" | wc -l 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 -R /path/to/mydir/ | grep "^d" | wc -l …..#对于所有的子目录

要么

hdfs dfs -ls /path/to/mydir/ | grep "^d" | wc -l hdfs dfs -ls /path/to/mydir/ | grep "^d" | wc -l …..#对于maxdepth = 1