You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Return manifests and manifest lists as pyarrow tables from pyiceberg-core #3648
Is your feature request related to a problem or challenge?
pyiceberg-core returns manifest entries and manifest-list entries as per-entry #[pyclass] objects, which PyIceberg converts into its own objects one at a time. apache/iceberg-python#4007 shows that conversion costing about as much as PyIceberg's whole Cython decode. #3388 and #3631 added iceberg::arrow::read_manifest_entries and iceberg::arrow::read_manifest_list, which decode into a RecordBatch. This is part of Task 3 of #3262.
Describe the solution you'd like
Add binding functions that return pyarrow tables from those readers, next to the existing ones. The binding already depends on arrow with the pyarrow feature. read_manifest_entries takes the manifest's ManifestFile to apply inheritance, so the binding needs a way to pass it in.
The existing read_manifest_list binding hard-codes FormatVersion::V2 (bindings/python/src/manifest.rs#L223-L228). This should fix that by reading through iceberg::arrow::read_manifest_list, which takes the version from the file and returns an error for an unknown one.
This follows #3647, which settles the readers' return type.
Activity