Build inspect.entries() and inspect.files() from pyiceberg-core Arrow output

Open
#4,297 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
python

Research direction

Start with pyiceberg/table/inspect.py at inspect.entries() and inspect.files(), then read pyiceberg/manifest.py around _inherit_from_manifest and the dependency ranges in pyproject.toml. Check the pyiceberg-core Arrow reader release and its DataFusion major version before changing the dependency pin. Done when both methods use Arrow manifest output when the optional extra is installed, retain the current path without it, and their tests cover the inherited fields and dependency constraints.

Written by the indexing model from the issue text.

Description

Feature Request / Improvement

inspect.entries() and inspect.files() build a DataFile per manifest entry and then flatten them back into a pa.Table (inspect.py#L152, inspect.py#L860). Once pyiceberg-core returns manifests as pyarrow tables (apache/iceberg-rust#3648), these methods can build their tables from that output directly. They're the first consumer of the Arrow output in #4007, because they want Arrow anyway.

The Arrow manifest reader fills null snapshot_id, sequence_number, and file_sequence_number values from the manifest list as the manifest_entry fields specify, and null first_row_id values as first row ID inheritance specifies. That replaces what _inherit_from_manifest (manifest.py#L1050) does today. pyiceberg-core is an optional extra, so the current path stays when it isn't installed.

This needs a pyiceberg-core release with the Arrow readers, and raising PyIceberg's pin (>=0.10.1,<0.11.0) to it. The new range has to name the same DataFusion major version as the datafusion range (pyproject.toml#L95-L98).

Dominant language
Python
Stars
1.2k
Forks
664
Avg merge
2d 10h
Merged PRs (30d)
131

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

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.