Writer: nested List<Struct> columns are 5.5x larger than Rust's (masked wrappers at every level, uncompressed list offsets)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 18/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- data, performance
Línea de trabajo
The payload names no source files, so start by comparing one tags chunk from the Rust-written file with the Java-written file, splitting bytes into list offsets, struct elements and validity. The issue points at the vortex.masked wrappers on the list, struct and each field, and at list offsets that Rust run-end encodes but Java does not. Done means the per-child breakdown identifies which part causes the 5.5x gap, and the Java output size is brought close to Rust's on the same input.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Raincloud osm-germany-nodes, column tags (List<Struct<key: Utf8, value: Utf8>>), vortex-java's Parquet import vs the vortex-jni-written file, data bytes:
| size | typical chunk encoding | |
|---|---|---|
| Rust | 732.7 MB | list(struct(dict(primitive, fsst(primitive, primitive)), dict(bitpacked, fsst(primitive, primitive))), runend(primitive, primitive)) |
| Java | 4,023.7 MB (5.5x) | masked(list(masked(struct(masked(dict(bitpacked, fsst(...)), constant), masked(dict(bitpacked, fsst(...)), ... |
+3.3 GB on this one column; the whole file is 18.4 GB vs Rust's 15.5 GB.
Visible differences in the trees:
vortex.maskedwrappers on the list, the struct and each field, where Rust carries validity in the arrays themselves (as #604 did for integers; #646 for decimals);- Rust run-end encodes the list offsets (
runend(primitive, primitive)); Java's offsets don't appear compressed that way.
To narrow down: per-child byte breakdown of one chunk in both files (offsets vs elements vs validity), and whether Java's chunks hold far fewer rows (Java wrote 1559+ chunks of the most common shape alone).
- Lenguaje dominante
- Java
- Estrellas
- 3
- Forks
- 2
- Merge medio
- 9 h 47 min
- PR fusionados (30 d)
- 128
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dfa1/vortex-java
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
dfa1/vortex-java#636 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
dfa1/vortex-java#655 ·
Los mantenedores suelen responder en 1 día
-
perf
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
dfa1/vortex-java#651 ·
Los mantenedores suelen responder en 1 día
-
Writer: string columns written as per-chunk dicts where Rust uses its dict layout (up to 2x larger)Abiertoperf
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
dfa1/vortex-java#650 ·
Los mantenedores suelen responder en 1 día
-
perf
Dificultad 4/5 3-5 días Aptitud para principiantes 28/100
dfa1/vortex-java#649 ·
Los mantenedores suelen responder en 1 día
Todos los issues de dfa1/vortex-java
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
objectionary/lints#1640 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
openhab/openhab-addons#22168 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
wildfly/wildfly-channel#446 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
5.0.x backport enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
spring-cloud/spring-cloud-function#1507 ·
Los mantenedores suelen responder en 1 día