apache / apache/parquet-java

Add merge blocks command to parquet-tools

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

Descripción

Current implementation of merge command in parquet-tools doesn't merge row groups, just places one after the other. Add API and command option to be able to merge small blocks into larger ones up to specified size limit.
###### Implementation details:

Blocks are not reordered not to break possible initial predicate pushdown optimizations.
Blocks are not divided to fit upper bound perfectly.
This is an intentional performance optimization.
This gives an opportunity to form new blocks by coping full content of smaller blocks by column, not by row.
###### Examples:
1. Input files with blocks sizes:
```java

[128 | 35], [128 | 40], [120]
```
Expected output file blocks sizes:
`merge `
```java

[128 | 35 | 128 | 40 | 120]
```
`merge -b`
```java

[128 | 35 | 128 | 40 | 120]
```
`merge -b -l 256 `
```java

[163 | 168 | 120]
```

1. Input files with blocks sizes:
```java

[128 | 35], [40], [120], [6] 
```
Expected output file blocks sizes:
`merge`
```java

[128 | 35 | 40 | 120 | 6] 
```
`merge -b`
```java

[128 | 75 | 126] 
```
`merge -b -l 256`
```java

[203 | 126]
```

**Reporter**: [Ekaterina Galieva](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=Katya) / @kgalieva
**Assignee**: [Ekaterina Galieva](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=Katya) / @kgalieva
#### PRs and other links:
- [GitHub Pull Request #512](https://github.com/apache/parquet-mr/pull/512)
- [GitHub Pull Request #621](https://github.com/apache/parquet-mr/pull/621)
- [GitHub Pull Request #775](https://github.com/apache/parquet-mr/pull/775)
- [GitHub Pull Request #512](https://github.com/apache/parquet-mr/pull/512)

**Note**: *This issue was originally created as [PARQUET-1381](https://issues.apache.org/jira/browse/PARQUET-1381). 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 con el comando merge existente en parquet-tools y la API utilizada por ese comando. Revisa los pull requests enlazados para conocer el contexto de implementaciones anteriores y, después, verifica los ejemplos de tamaño de bloque y las opciones del comando descritos aquí; se considerará terminado cuando merge -b forme bloques más grandes sin reordenarlos ni dividirlos más allá del límite especificado.

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
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
20/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.