如何查找HDFS文件的大小

时间:2012-07-20 07:02:22

标签: hadoop hdfs

如何查找HDFS文件的大小?应使用什么命令来查找HDFS中任何文件的大小。

6 个答案:

答案 0 :(得分:31)

我也发现自己使用hadoop fs -dus <path>很多。例如,如果名为“/ user / frylock / input”的HDFS上的目录包含100个文件,并且您需要运行所有这些文件的总大小:

hadoop fs -dus /user/frylock/input

然后你会得到“/ user / frylock / input”目录中所有文件的总大小(以字节为单位)。

另外,请记住,HDFS会冗余存储数据,因此文件使用的实际物理存储空间可能是hadoop fs -lshadoop fs -dus报告的实际物理存储空间的3倍或更多。

答案 1 :(得分:18)

您可以使用hadoop fs -ls命令列出当前目录中的文件及其详细信息。命令输出中的第5列包含以字节为单位的文件大小。

例如命令hadoop fs -ls input给出以下输出:

Found 1 items
-rw-r--r--   1 hduser supergroup      45956 2012-07-19 20:57 /user/hduser/input/sou

文件sou的大小为45956字节。

答案 2 :(得分:11)

我使用了以下功能帮助我获取文件大小。

public class GetflStatus
{
    public long getflSize(String args) throws IOException, FileNotFoundException
    {
        Configuration config = new Configuration();
        Path path = new Path(args);
        FileSystem hdfs = path.getFileSystem(config);
        ContentSummary cSummary = hdfs.getContentSummary(path);
        long length = cSummary.getLength();
        return length;
    }
}

答案 3 :(得分:7)

使用awk脚本查看下面的命令,以查看HDFS中过滤输出的大小(以GB为单位):

hadoop fs -du -s /data/ClientDataNew/**A***  | awk '{s+=$1} END {printf "%.3fGB\n", s/1000000000}'

输出---&gt; 2.089GB

hadoop fs -du -s /data/ClientDataNew/**B***  | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'

输出---&gt; 1.724GB

hadoop fs -du -s /data/ClientDataNew/**C***  | awk '{s+=$1} END {printf  "%.3fG\n", s/1000000000}'

输出---&gt; 0.986GB

答案 4 :(得分:2)

如果您想通过API执行此操作,可以使用'getFileStatus()'方法。

答案 5 :(得分:1)

hdfs dfs -du -s -h /directory

这是人类可读的版本,否则会给出错误的单位(稍大)