2016-08-09 9 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

export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Xmx5g"、その後

hdfs dfs -ls -R /path/to/mydir/ | grep "^d" | wc -l .....すべてのサブディレクトリの場合#

OR:エラーを回避するためには、Javaのヒープ領域を増やし、同じコマンドを実行する必要があります

hdfs dfs -ls /path/to/mydir/ | grep "^d" | wc -l ..... MAXDEPTH = 1

関連する問題