Writer: vortex.onpair throws on a string chunk past 2 GB instead of stepping aside
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #656 di @dfa1 — integrata
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 42/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- data-engineering
Direzione di ricerca
Start in OnPairEncodingEncoder.java: the Encoder.rows method near line 152 throws when a chunk's row bytes exceed 2 GB, and encodeCascade around line 86 calls it. The fix is for the encoder to return CascadeStep.notApplicable() so CascadingCompressor.encodeChoice (line 326) lets the other string encodings win. Done when a forced vortex.onpair import of a >2 GB chunk falls back instead of throwing, verified by a case in LargeChunkInteropIntegrationTest under the large tag.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
A default (non-compact) Parquet import of Raincloud's websight-v01 (29 GB Parquet, 822,987 rows of HTML) fails after the first chunk:
UnsupportedOperationException: vortex.onpair: chunk exceeds 2 GB of row bytes
at io.github.dfa1.vortex.writer.encode.OnPairEncodingEncoder$Encoder.rows(OnPairEncodingEncoder.java:152)
at io.github.dfa1.vortex.writer.encode.OnPairEncodingEncoder.encodeCascade(OnPairEncodingEncoder.java:86)
at io.github.dfa1.vortex.writer.encode.CascadingCompressor.spliceResult(CascadingCompressor.java:478)
at io.github.dfa1.vortex.writer.encode.CascadingCompressor.encodeChoice(CascadingCompressor.java:326)
OnPairEncodingEncoder lays a chunk's rows out contiguously (VarBinBytes.toContiguous) and throws when they don't fit one byte[]. Since #633 every other string encoding (varbin, varbinview, fsst, zstd) handles a chunk past 2 GiB, so an encoder that cannot should decline (CascadeStep.notApplicable()) and let those win, rather than abort the write. The compact import of the same file (which doesn't offer onpair) succeeds, and the file passes conformance.
open-food-facts (15 GB Parquet) failed its default import at the same step; its log was overwritten, so the cause is unconfirmed but likely the same.
Check against Rust: whether its onpair scheme bounds its input size or declines large arrays.
A cross-check belongs in LargeChunkInteropIntegrationTest (large tag): force vortex.onpair alongside the others, expecting a fallback rather than an exception.
- Lingua principale
- Java
- Stelle
- 3
- Fork
- 2
- Merge medio
- 9h 51m
- PR unite (30g)
- 127
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
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 dfa1/vortex-java
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
dfa1/vortex-java#636 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
dfa1/vortex-java#657 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
dfa1/vortex-java#655 ·
I maintainer di solito rispondono entro 1 giorno
-
perf
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
dfa1/vortex-java#651 ·
I maintainer di solito rispondono entro 1 giorno
-
Writer: string columns written as per-chunk dicts where Rust uses its dict layout (up to 2x larger)Apertaperf
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
dfa1/vortex-java#650 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di dfa1/vortex-java
Issue simili
-
status:pending type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
EngineHub/WorldGuard#2329 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Dans-Plugins/Medieval-Roleplay-Engine#396 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 6 giorni
-
type: dependency-upgrade
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
spring-projects/spring-session#4156 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
quarkiverse/quarkus-langchain4j#3127 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno