【问题标题】:Reading partitioned Parquet file with Pyarrow uses too much memory使用 Pyarrow 读取分区 Parquet 文件会占用太多内存
【发布时间】:2019-06-26 09:06:08
【问题描述】:

我有一个由分区 Parquet 文件组成的大型 Impala 数据库。 我直接使用 HDFS 将一个 Parquet 分区复制到本地磁盘。这个分区总共有 15GB,由许多文件组成,每个文件 10MB。我正在尝试使用带有 Pyarrow 引擎或 Pyarrow 的 Pandas 直接读取它,但它在内存中的大小使用超过 60GB 的 RAM,并且在使用所有内存之前它不会读取整个数据集。如此大的内存使用量可能是什么原因?

【问题讨论】:

  • 文件的总大小是 15GB 吗?
  • 是的,我复制的整个分区的大小,当然有很多罚款。

标签: pandas hdfs parquet impala pyarrow


【解决方案1】:

Parquet 文件在磁​​盘和内存中的大小可以变化很大。 Parquet 使用高效的编码和压缩技术来存储列。当您将此数据加载到 RAM 中时,数据将被解压缩为其未压缩的形式。因此,对于大小为 15G 的文件数据集,预计 RAM 使用量为 150G。

如果您不确定这是否是您的问题,请使用 df = pandas.read_parquet 加载单个文件并使用 df.memory_usage(deep=True) 检查其内存使用情况。这应该可以很好地指示整个数据集的磁盘和 RAM 之间的缩放比例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 2021-03-26
    • 2020-02-25
    • 2015-07-23
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多