如何查找 HDFS 文件的大小?应该使用什么命令来查找 HDFS 中任何文件的大小。
问问题
105425 次
7 回答
33
我也发现自己使用hadoop fs -dus <path>
了很多。例如,如果 HDFS 上名为“/user/frylock/input”的目录包含 100 个文件,并且您需要所有可以运行的文件的总大小:
hadoop fs -dus /user/frylock/input
您将获得“/user/frylock/input”目录中所有文件的总大小(以字节为单位)。
hadoop fs -ls
此外,请记住,HDFS 以冗余方式存储数据,因此文件使用的实际物理存储可能是and报告的 3 倍或更多hadoop fs -dus
。
于 2012-07-20T10:25:10.440 回答
22
您可以使用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 字节。
于 2012-07-20T08:12:30.370 回答
15
我使用了以下函数来帮助我获取文件大小。
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;
}
}
于 2014-03-18T16:31:24.417 回答
9
使用 awk 脚本查看以下命令以查看 HDFS 中过滤输出的大小(以 GB 为单位):
hadoop fs -du -s /data/ClientDataNew/**A*** | awk '{s+=$1} END {printf "%.3fGB\n", s/1000000000}'
输出---> 2.089GB
hadoop fs -du -s /data/ClientDataNew/**B*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'
输出---> 1.724GB
hadoop fs -du -s /data/ClientDataNew/**C*** | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'
输出---> 0.986GB
于 2016-05-10T14:44:59.083 回答
4
hdfs dfs -du -s -h /directory
这是人类可读的版本,否则它会给出错误的单位(略大)
于 2019-02-05T19:31:00.833 回答
2
如果你想通过 API 来做,你可以使用 'getFileStatus()' 方法。
于 2012-07-20T12:13:59.140 回答
0
如果您想知道目录中每个文件的大小,请在末尾使用“*”星号。
hadoop fs -du -s -h /tmp/output/*
我希望这有助于你的目的。
于 2021-08-31T08:52:04.310 回答