计算hdfs中

时间:2016-01-11 15:15:41

标签: hadoop count grep hdfs bigdata

我正在尝试计算在Hdfs文件夹中压缩的文件。 我正在使用hdfs dfs -count / user / data | grep .snappy - 没有显示任何内容 grep .snappy | hdfs dfs -count / user / data --it显示所有文件(即使不是.snappy)

我是否可以获得正确的命令来计算此/ user / data hdfs路径中的.snappy文件

1 个答案:

答案 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