Support optional Parquet page index writes

Open
#3,847 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
25/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Stale
Tech stack
python

Research direction

Start by reviewing PR #3829, then inspect _get_parquet_writer_kwargs, mkdocs/docs/configuration.md, and the referenced unit and integration tests. Done means the opt-in property remains false by default, enables PyArrow page-index writing when true, and the documented tests pass.

Written by the indexing model from the issue text.

Description

Feature Request / Improvement

PyIceberg doesn't expose Parquet page index writing, even though PyArrow supports it with ParquetWriter(write_page_index=True).

Use case / motivation

Page indexes let readers such as ClickHouse skip non-matching pages during predicate evaluation, avoiding decoding work for selective queries. Tables written by PyIceberg currently lack these indexes, so page-level pruning is not possible regardless of reader support.

Proposed change

Add an opt-in write.parquet.page-index-enabled table property, default false, to preserve current output and file sizes. When enabled, PyIceberg passes write_page_index=True to PyArrow's ParquetWriter.

Implementation

PR #3829 adds the table property, threads it through _get_parquet_writer_kwargs, documents it in mkdocs/docs/configuration.md, and includes unit and integration test coverage.

Tooling note

I developed this with assistance from DS v4 Pro and reviewed the changes myself.

References
  • #3829
Dominant language
Python
Stars
1.1k
Forks
589
Avg merge
2d 4h
Merged PRs (30d)
72

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/iceberg-python

All issues in apache/iceberg-python

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.