Bulk skip in RunLengthBitPackingHybridDecoder / DictionaryValuesReader
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
Direzione di ricerca
Inizia leggendo RunLengthBitPackingHybridDecoder.readInt() e readNext(), quindi esamina skip(int) in DictionaryValuesReader e RunLengthBitPackingHybridValuesReader. Verifica come vengono decodificati i valori codificati tramite dizionario e identifica i test esistenti rilevanti o i relativi punti di ingresso. Il lavoro è completato quando il salto in blocco utilizza il percorso del decoder in tutti e tre i reader, preservando il numero di valori saltati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Motivation
Make Hive leverage bulk skip when implementing probe decode for Parquet, similarly to https://issues.apache.org/jira/browse/HIVE-22731, which was about ORC.
Problem
ValuesReader.skip(int n) ships with a naive default:
public void skip(int n) {
for (int i = 0; i < n; i++) skip();
}
For dictionary-encoded columns (the common case), each skip() bottoms
out in RunLengthBitPackingHybridDecoder.readInt() — a mode switch,
array-index arithmetic, and a value the caller immediately discards.
Any filter-then-skip path (column-index row ranges, hash-join probe
filtering, runtime filters) pays this cost per skipped row.
Proposal
- Add
RunLengthBitPackingHybridDecoder.skipInts(int n)— re-use
readNext()per run, then advancecurrentCountby
min(n, currentCount)instead of walking every value through
readInt(). - Override
skip(int)onDictionaryValuesReaderand
RunLengthBitPackingHybridValuesReaderto calldecoder.skipInts(n).
Component(s)
Core
- Lingua principale
- Java
- Stelle
- 3.1k
- Fork
- 1.6k
- Merge medio
- 6g 16h
- PR unite (30g)
- 36
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/parquet-java
-
Type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/parquet-java#3792 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/parquet-java#3767 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/parquet-java#3695 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/parquet-java#3667 ·
-
Type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
apache/parquet-java#3587 ·
Tutte le issue di apache/parquet-java
Issue simili
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
inu-appcenter/memorIN-backend#288 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
frontend maui-pilot pilot-ask question
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Apertaarea/plugin
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
kestra-io/plugin-kestra#190 ·