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

Polars中sink_parquet函数优化及row_group_size参数疑问

关于Polars中sink_parquet的优化疑问

我正在处理大文件的字符串操作,采用了LazyFrame和sink_parquet函数,目前希望优化该函数以提升吞吐量。

我的场景是用pl.scan_parquet()读取一个包含78M行的Parquet文件,文件信息显示其有40个row_groups。sink_parquet的row_group_size参数说明如下:

row_group_size:
行组的行数大小。若设为None(默认值),则使用DataFrame的分块。使用更小的分块可降低内存压力并提升写入速度。

我的疑问如下:

  • 是否有必要优化sink_parquet?若有必要,该如何操作?
  • 该函数是否会根据文件信息(总行数/行组数量)自动计算row_group_size?若不会,指定取值时有哪些灵活性?
  • 若使用默认值,DataFrame的分块具体指什么(尤其是输入为LazyFrame的情况)?当前进程仅占用约5G内存,可用内存约128G,无内存压力,若可行可使用更大分块。

我已查阅相关资料,但未找到明确线索。

更新:
针对600K行数据集的实验效果不佳。我将row_group_size在总行数的30%-100%范围内调整,整体处理时间和内存消耗几乎无差异,但取值较小时CPU使用率显著上升。观察到Parquet写入时CPU使用率已达95%-100%,因此较小的row_group_size意味着更频繁的写入操作,反而加剧了CPU负载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:52:38