我正在尝试计算在Hdfs文件夹中压缩的文件。 我正在使用hdfs dfs -count / user / data | grep .snappy - 没有显示任何内容 grep .snappy | hdfs dfs -count / user / data --it显示所有文件(即使不是.snappy)
我是否可以获得正确的命令来计算此/ user / data hdfs路径中的.snappy文件
答案 0 :(得分:2)
hdfs dfs -count
命令提供以下信息:
例如,我在/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
要获取.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
编辑:所有大于30 MB的文件 如果要查找大小大于或等于30 MB(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