Skip to content

Support optional Parquet page index writes #3847

Description

@adonm

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions