apache / apache/parquet-java

Improve logic when to write column indexes

Abierto
#2,228 2 comentarios 0 reacciones 0 asignados Ver en GitHub
Component: Parquet Priority: Minor Type: enhancement
Lenguaje dominante
Java
Estrellas
3.1k
Forks
1.6k
Merge medio
3 d 12 h
PR fusionados (30 d)
33

Descripción

Currently, we always write column indexes. In case of the data is ordered (ASCENDING or DESCENDING) the filtering would highly benefit from column indexes. While, if the data is UNORDERED it is not obvious if ordering based on column indexes would make sense. For example if the data is random then the min/max values of the different pages might be close to each other so in most cases filtering based on these values would not drop any of the pages. In the other hand UNORDERED values does not mean that the values are random. It can happen that the values are clustered or semi-ordered. We shall discover these cases somehow before writing the column indexes and write only if the min/max values for the pages do not overlap too much.

Another simple case if we have only one page. In this case writing column indexes is useless. 

**Reporter**: [Gabor Szadovszky](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=gszadovszky) / @gszadovszky
**Assignee**: [Gabor Szadovszky](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=gszadovszky) / @gszadovszky
#### Related issues:
- [Column indexes](https://github.com/apache/parquet-java/issues/2123) (depends upon)
- [Benchmark filtering column-indexes](https://github.com/apache/parquet-java/issues/2235) (depends upon)

**Note**: *This issue was originally created as [PARQUET-1415](https://issues.apache.org/jira/browse/PARQUET-1415). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza rastreando la ruta de escritura de column-index y cómo gestiona los datos ordenados frente a los no ordenados. Compara el comportamiento para datos de una sola página y para la superposición de los valores mínimo/máximo de las páginas; se considera terminado cuando se omiten los índices si no pueden mejorar el filtrado, con cobertura para los casos ordenados, no ordenados, agrupados y de una sola página.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
data-engineering, performance
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.