如何查找HDFS文件的大小

pri*_*iya 28 hadoop hdfs

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

Pau*_*l M 31

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

hadoop fs -dus /user/frylock/input
Run Code Online (Sandbox Code Playgroud)

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

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

  • 使用`hadoop fs -du -s -h/user/frylock/input`可以获得更易读的输出. (20认同)
  • hadoop fs -du -s <path>适用于较新版本 (4认同)

abh*_*rni 20

您可以使用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
Run Code Online (Sandbox Code Playgroud)

文件大小sou为45956字节.


小智 13

我使用下面的函数帮助我获取文件大小.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

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

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

输出---> 2.089GB

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

输出---> 1.724GB

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

输出---> 0.986GB


Jas*_*son 6

hdfs dfs -du -s -h /directory
Run Code Online (Sandbox Code Playgroud)

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