apache / apache/parquet-java

Add merge blocks command to parquet-tools

Ouverte
#2,214 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Component: Java Component: Parquet Priority: Major Type: enhancement
Langage dominant
Java
Étoiles
3.1k
Forks
1.6k
Merge moyen
3 j 12 h
PR mergées (30 j)
33

Description

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.*

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par la commande merge existante dans parquet-tools et par l’API utilisée par cette commande. Consultez les pull requests liés pour connaître le contexte des implémentations précédentes, puis vérifiez les exemples de taille de bloc et les options de commande décrits ici ; le travail est considéré comme terminé lorsque merge -b forme des blocs plus grands sans les réordonner ni les diviser au-delà de la limite spécifiée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
cli, data-engineering
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
20/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.