Avro schema is re-converted to an Iceberg schema on every manifest read during scan planning
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Refactorización
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- python
- Área
- performance
Línea de trabajo
Comience en pyiceberg/avro/file.py, en AvroFileHeader.get_schema(), y siga la conversión avro_to_iceberg. Use scan().plan_files() con manifiestos repetidos para observar el trabajo repetido y confirmar que los resultados de la conversión se reutilizan según la cadena del esquema, con una mejora del rendimiento de planificación a medida que aumenta el número de manifiestos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Feature Request / Improvement
AvroFileHeader.get_schema() (pyiceberg/avro/file.py) runs the full avro_to_iceberg conversion every time an
Avro file is opened.
The inefficiency
- Every manifest under a spec embeds an identical Avro schema string.
- So during scan planning, that same conversion is repeated once per manifest.
- The cost grows with the manifest count, even though only a couple of distinct schemas are ever involved.
Proposed fix
- The conversion depends only on the schema string, so the result can be cached (keyed on that string).
Measured impact
scan().plan_files()on an unpartitioned 150-manifest table: ~86 ms → ~48 ms (~1.8× faster).- The saving grows as the number of manifests increases.
I am willing to contribute for this improvement.
- Lenguaje dominante
- Python
- Estrellas
- 1.1k
- Forks
- 589
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 72
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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/iceberg-python
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/iceberg-python#3996 ·
-
Deletion vector bitmap count is read from the blob and used as a loop bound without validation Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/iceberg-python#3979 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/iceberg-python#3885 ·
-
[Bug] PyArrowFileIO fails to propagate s3.ssl.ca-cert to pyarrow.fs.S3FileSystem tls_ca_file_path Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
apache/iceberg-python#3866 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/iceberg-python#3836 · 1 comentario ·
Todos los issues de apache/iceberg-python
Issues similares
-
documentation help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
simonw/sqlite-utils#872 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100