apache / apache/parquet-java

parquet-tools merge extremely slow with block-option

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

Descripción

parquet-tools merge is extremely time- and memory-consuming when used with block-option.

 

The merge function builds a bigger file out of several smaller parquet-files. Used without the block-option it just concatenates the files into a bigger one without building larger row-groups. That doesn't help with query-performance-issues. With block-option, parquet-tools build bigger row-groups which improves the query-performance, but the merge-process itself is extremely slow and memory-consuming.

 

Consider a case in which you have many small parquet files, e.g. 1000 files with a size of 100kb. Merging them into one file fails on my machine because even 20GB of memory are not enough for the process (the total amount of data as well as the resulting file should be smaller than 100MB).

 

Different situation: Consider having 100 files of size 1MB. Then merging them is possible with 20GB of RAM, but it takes almoust half an hour to process, which is to much for many use-cases.

 

Is there any possibility to accelerate the merge and reduce the need of memory?

**Reporter**: [Alexander Gunkel](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=Checkito)

**Note**: *This issue was originally created as [PARQUET-1670](https://issues.apache.org/jira/browse/PARQUET-1670). 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

Comience en el punto de entrada de merge de parquet-tools y reproduzca los casos de block-option informados: 1,000 archivos de 100 KB y 100 archivos de 1 MB. Compare el tiempo de ejecución y la memoria con y sin block-option; se considera completado cuando el merge con block-option termina sin un uso excesivo de memoria y es sustancialmente más rápido, conservando grupos de filas más grandes.

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

Evaluación

Stack tecnológico
java
Área
cli, data-engineering
Tipo de issue
Error
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.