Reuse Parquet OffsetIndex objects and direct-plan decisions
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- cpp
- Domínio
- data-engineering, performance
Direção de pesquisa
Comece verificando a issue #314, que é indicada como a implementação deste trabalho. Valide os valores selecionados e os tempos de vida dos índices em seleções sparse e dense, incluindo os limites de retenção de row-groups, e depois compare o format benchmark com main quanto à latência e aos bytes de armazenamento, sem presumir um ganho geral de velocidade.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- C++
- Estrelas
- 65
- Forks
- 29
- Merge médio
- 2d 11h
- PRs com merge (30d)
- 79
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de apache/paimon-cpp
-
bug
apache/paimon-cpp#385 · 1 responsável ·
-
enhancement
apache/paimon-cpp#381 · 1 responsável ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
apache/paimon-cpp#375 · 1 responsável ·
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
apache/paimon-cpp#361 · 1 responsável ·
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
apache/paimon-cpp#325 · 1 responsável ·
Todas as issues de apache/paimon-cpp
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
brave/brave-browser#59300 ·
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main Abertaai_reviewed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
ydb-platform/ydb#53974 · 3 comentários ·