Vue d'ensemble

PyArrow 15.0, publie le 22 janvier 2024, ajoute l'interface PyCapsule pour l'echange zero-copy entre bibliotheques Python.

Fonctionnalites principales

Interface PyCapsule

L'interface PyCapsule (Arrow C Data Interface) permet d'echanger des donnees Arrow entre bibliotheques sans copie memoire, via __arrow_c_array__.

python
import pyarrow as pa

arr = pa.array([1, 2, 3, 4, 5])

# Export via PyCapsule (Arrow C Data Interface)
schema_capsule, array_capsule = arr.__arrow_c_array__()

# Import depuis une autre bibliotheque
restored = pa.Array._import_from_c_capsule(
    schema_capsule, array_capsule
)
print(restored)  # [1, 2, 3, 4, 5]

Ameliorations Parquet

Le moteur Parquet gagne des lectures plus rapides grace a un decodage optimise des pages et un meilleur filtrage par predicate pushdown.

python
import pyarrow.parquet as pq
import pyarrow as pa

table = pa.table({'id': range(1000), 'val': range(1000)})
pq.write_table(table, '/tmp/data.parquet')

# Lecture avec filtrage pushdown
result = pq.read_table(
    '/tmp/data.parquet',
    filters=[('id', '>', 500)],
)
print(result.num_rows)  # 499

Sources