Writer: nested List<Struct> columns are 5.5x larger than Rust's (masked wrappers at every level, uncompressed list offsets)

Abierto
#648 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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
Stack tecnológico
java, rust
Á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

perf

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.masked wrappers 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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dfa1/vortex-java

Todos los issues de dfa1/vortex-java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.