Skip to content

[python] Reduce memory usage for Parquet row-id updates - #9840

Open
XiaoHongbo-Hope wants to merge 6 commits into
apache:masterfrom
XiaoHongbo-Hope:codex/stream-row-id-overlay
Open

XiaoHongbo-Hope wants to merge 6 commits into
apache:masterfrom
XiaoHongbo-Hope:codex/stream-row-id-overlay

Conversation

@XiaoHongbo-Hope

@XiaoHongbo-Hope XiaoHongbo-Hope commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Background

Data-evolution column updates rewrite the affected file-group range, even when only a few rows change. Materializing the projected columns and buffering the merged output can cause high memory usage for large string or nested columns.

Changes

Stream ordinary Parquet updates with bounded row-group buffering independent of read batch size. Preserve row-id ranges, statistics, metadata, and failure cleanup. Deduplicate update projections consistently. Specialized format paths remain unchanged.

This reduces whole-group buffering, but does not eliminate read/write amplification or impose a hard process-memory limit.

Tests

Cover batch/stream upserts, duplicate update columns, nested values, nulls, row-group boundaries, and write/close failure cleanup, including Python 3.6 / PyArrow 6 compatibility.

@XiaoHongbo-Hope XiaoHongbo-Hope changed the title [python] Stream ordinary Parquet row-id update overlays [python] Reduce memory usage for Parquet row-id updates Sep 15, 2026
@XiaoHongbo-Hope
XiaoHongbo-Hope marked this pull request as ready for review September 15, 2026 12:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant