如何在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
1条答案
按热度按时间6ss1mwsb1#
要使用的命令是:
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
..…#对于最大深度=1