Reuse Parquet OffsetIndex objects and direct-plan decisions
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- cpp
- Domaine
- data-engineering, performance
Piste de recherche
Commencez par examiner l'issue #314, qui est désignée comme l'implémentation de ce travail. Validez les valeurs sélectionnées et les durées de vie des index pour des sélections sparse et dense, y compris les limites de rétention des row-groups, puis comparez le format benchmark avec main en termes de latence et d'octets de stockage, sans supposer un gain de vitesse général.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Problem
Selective Parquet reads repeat CPU work within one file reader: Arrow 17 reparses OffsetIndex on each lookup, page planning scans page locations for sparse row selections, and decoding rebuilds a direct-read plan just to determine whether compressed row coordinates apply.
The byte cache in #272 reduces repeated I/O but does not eliminate this parsing and planning work.
Proposed improvement
- Reuse parsed OffsetIndex objects within each retained row-group reader.
- Seek across page gaps for sparse selections and visit each selected page once.
- Reuse the direct-plan decision during decoding.
Preserve index validation, dictionary handling, per-leaf row coordinates and missing-index fallbacks. Keep parsed objects reader-local without introducing a shared data cache or public option.
Validation
Check selected values and index lifetimes, including sparse/dense selections and the row-group retention limit. Compare against main with the format benchmark, reporting latency and storage bytes without assuming a general speedup.
Implementation: #314.
- Langage dominant
- C++
- Étoiles
- 65
- Forks
- 29
- Merge moyen
- 2 j 11 h
- PR mergées (30 j)
- 79
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/paimon-cpp
-
bug
apache/paimon-cpp#385 · 1 personne assignée ·
-
enhancement
apache/paimon-cpp#381 · 1 personne assignée ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
apache/paimon-cpp#375 · 1 personne assignée ·
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
apache/paimon-cpp#361 · 1 personne assignée ·
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
apache/paimon-cpp#325 · 1 personne assignée ·
Toutes les issues de apache/paimon-cpp
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
duckdb/duckdb-wasm#2258 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
objectionary/eo-graphs#75 ·
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Ouvertecoarray
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
FISCO-BCOS/FISCO-BCOS#5642 ·