Python HDFS 给出的文件大小不正确

Python HDFS gives incorrect file size

我正在尝试使用 python 3.5 和 hdfs 库从 hdfs 获取文件的大小。

https://pypi.python.org/pypi/hdfs/

from hdfs.client import Client
if __name__ == '__main__':

    cl = Client("http://hostName:50070")

    print (cl.content("/path/to/file/fileName.txt",False))

我得到

{'spaceQuota': -1, 'directoryCount': 0, 'spaceConsumed': 103566, 'length': 34522, 'quota': -1, 'fileCount': 1}

因此根据此消息,文件大小为 103 KB

但是当我看到 http://hostName:50070/explorer.html#/path/to/file/

我看到文件大小是33.71 KB!这怎么可能?还有另一种方法可以在 hdfs 中获取文件的正确大小吗?一个目录的大小如何?

您所看到的是正确的。

注意长度参数,它显示的值接近您期望看到的 33.71KB。长度在 hadoop 文档中定义为文件中的字节数。 spaceConsumed 是占用了多少磁盘space。

这些不一定一致,因为文件系统中的块大小和开销(我对 hadoop 不够熟悉,无法知道您的情况的确切原因)

实际文件大小为 33.71 KB,hdfs 上的大小为 103 KB。 HDFS 复制因子为 3,这意味着 hdfs 上的文件大小变为 3 X actual_file_size。