Native Parquet write falls back on int96RebaseModeInWrite=LEGACY even when timestamps are not written as INT96
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 62/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- data-engineering
Línea de trabajo
El fallback está en NativeWriteUtils.legacyDatetimeRebaseWriteReason; empieza allí y lee cómo inspecciona int96RebaseModeInWrite antes de comprobar el tipo de timestamp de salida. Añade una condición para que la comprobación de INT96 se aplique solo cuando spark.sql.parquet.outputTimestampType sea INT96, y luego añade una prueba de regresión con TIMESTAMP_MICROS y int96RebaseModeInWrite=LEGACY que afirme que la escritura se mantiene nativa. Está terminado cuando esa prueba pasa y se actualiza el párrafo de docs/source/user-guide/latest/parquet.md.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What is the problem the feature request solves?
Found in review of #7053. The native Parquet writer fallback added there, NativeWriteUtils.legacyDatetimeRebaseWriteReason, treats spark.sql.parquet.int96RebaseModeInWrite=LEGACY as a reason to fall back whenever the output has a timestamp column. That setting only governs the INT96 encoding. When spark.sql.parquet.outputTimestampType is TIMESTAMP_MICROS or TIMESTAMP_MILLIS, Spark writes INT64 and uses datetimeRebaseModeInWrite instead, so the INT96 setting has no effect on the output.
Reproduction: a timestamp column, outputTimestampType=TIMESTAMP_MICROS, datetimeRebaseModeInWrite=CORRECTED. Changing only int96RebaseModeInWrite from CORRECTED to LEGACY makes the helper return a fallback reason instead of None. Spark writes the same INT64 TIMESTAMP(MICROS) either way (for 1500-01-01 12:34:56.123456 both files contain -14831724303876544).
The fallback is safe, but an unrelated legacy INT96 setting disables native write acceleration for a write the native writer handles correctly.
Describe the potential solution
Only apply the INT96 condition when spark.sql.parquet.outputTimestampType is INT96. The native writer always writes INT64 microseconds and ignores outputTimestampType when writing, so the check has to read the session conf.
Add a regression test with a non-INT96 timestamp output and int96RebaseModeInWrite=LEGACY that asserts the write stays native and matches Spark's value. Update the paragraph in docs/source/user-guide/latest/parquet.md that names int96RebaseModeInWrite=LEGACY as a fallback trigger.
Additional context
Reviewer comment: https://github.com/apache/datafusion-comet/pull/7053#discussion_r4458640616
Follow-on to #7053, which should merge first.
- Lenguaje dominante
- Scala
- Estrellas
- 1.3k
- Forks
- 405
- Merge medio
- 3 d 3 h
- PR fusionados (30 d)
- 269
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una 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 apache/datafusion-comet
-
requires-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/datafusion-comet#7479 ·
Los mantenedores suelen responder en 2 días
-
requires-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/datafusion-comet#7458 ·
Los mantenedores suelen responder en 2 días
-
requires-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/datafusion-comet#7453 ·
Los mantenedores suelen responder en 2 días
-
area:ci enhancement priority:low requires-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
apache/datafusion-comet#7319 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
area:ci bug priority:low requires-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/datafusion-comet#7315 ·
Los mantenedores suelen responder en 2 días
Todos los issues de apache/datafusion-comet
Issues similares
-
bug 🐞 python 🐍
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
valkey-io/valkey-glide#7560 ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día
-
bug minor
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
propensive/soundness#2418 ·
Los mantenedores suelen responder en 1 día
-
Broken links in the docsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
digital-asset/canton#710 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
scylladb/scylla-migrator#432 ·
Los mantenedores suelen responder en 1 día