【问题标题】:Counting the number of compressed files in hdfs统计hdfs中压缩文件的个数
【发布时间】:2016-01-11 15:15:41
【问题描述】:

我正在尝试计算 Hdfs 文件夹中压缩的文件。 我正在使用 hdfs dfs -count /user/data | grep .snappy -- 它什么也不显示 grep .snappy | hdfs dfs -count /user/data --它显示所有文件(即使不是.snappy)

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

【问题讨论】:

    标签: hadoop count grep hdfs bigdata


    【解决方案1】:

    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 命令。例如要获取/user/data 文件夹下.snappy 文件的数量,只需执行:

      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
    

    【讨论】:

    • 对于小于 30Mb 的文件有没有办法检查上述要求
    • [root@user~]# hadoop fsck /user/data/ -files | grep ".snappy" | gawk "{if ($2>1024) print $1,$2;}" gawk: {if (>1024) print ,;} gawk: ^ 语法错误 已弃用:不建议使用此脚本执行 hdfs 命令。而是使用 hdfs 命令。通过ip:port 连接到namenode
    • 还有其他方法可以做到这一点吗?我真的需要得到大于 100Mb 的压缩文件
    • @Naveen 我已经更新了答案。我在我的 Windows 机器上执行这个命令。它工作正常。在 Linux 机器上,您需要对 gawk 中的块使用单引号。请检查更新的答案。它在我的 Linux VM 上运行良好。
    • Manju,它可以工作,但它列出了所有文件。有1000多个文件。我只想要 .snappy 文件的数量 > 30MB
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多