计算hdfs中压缩文件的数量

3zwjbxry  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(542)

我试图计算压缩在hdfs文件夹中的文件数。我使用的是hdfs dfs-count/user/data | grep.snappy—它不显示任何内容grep.snappy | hdfs dfs-count/user/data—它显示所有文件(即使不是.snappy)
我能得到正确的命令来计算这个/user/data hdfs路径中的.snappy文件吗

ru9i0ody

ru9i0ody1#

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

编辑:大于30MB的所有文件如果要查找大于或等于30MB(3010241024=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

相关问题