You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在写入Parquet文件前估算Pandas DataFrame的磁盘占用大小?

合并同Schema Parquet文件并控制输出大小

环境配置

  • Python 3.9
  • Pandas 1.4.3
  • PyArrow 8.0.0

核心需求

需要合并input目录下所有Schema一致的Parquet文件,且合并后的单个文件大小不得超过指定阈值。直接通过os.path.getsize(path)累加原文件大小来预估最终输出大小并不准确,因为元数据等因素会影响实际写入后的文件体积。

尝试的大小预估方法

为了预估DataFrame写入Parquet前的内存/磁盘占用,我测试了以下几种方式:

print(df.info())
print(df.memory_usage().sum())
print(df.memory_usage(deep=True).sum())
print(sys.getsizeof(df))
print(df.values.nbytes + df.index.nbytes + df.columns.nbytes)

基于压缩因子的阈值控制方案

由于最终文件大小受压缩方式、读写引擎、Schema等因素影响,我采用压缩因子来动态设置阈值:
例如,若目标压缩后的文件大小阈值为1MB,假设数据压缩比为75%(即4MB的内存数据压缩后为1MB),可按如下方式定义参数:

compressed_threshold_in_mb = 1
compression_factor = 4

后续通过判断累计预估大小(total_accumulated_size,即合并中DataFrame预估磁盘占用的累加值)是否超过compressed_threshold_in_mb * compression_factor,来决定是否继续向当前合并DataFrame追加数据。

内容的提问来源于stack exchange,提问作者Ori Refael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:06:16