apache / apache/parquet-java

Provide callback to allow user defined key-value metadata merging strategy

Ouverte
#1,740 5 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

When merging footers, Parquet doesn't know how to merge conflicting user defined key-value metadata entries, and simply throws. It would be better to provide callbacks to let users define metadata merging strategies.

For example, in Spark SQL, we store our own schema information in Parquet files as key-value metadata (similar to parquet-avro). While trying to add schema merging support for reading Parquet files with different but compatible schemas, `InitContext.getMergedKeyValueMetaData` throws because we have different Spark SQL schemas stored in different Parquet data files. Thus, we have to overwrite `ParquetInputFormat` and merge the schema within `getSplits`, which is kinda hacky and inconvenient.

**Reporter**: [Cheng Lian](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=lian+cheng) / @liancheng
#### Related issues:
- [Release parquet-mr 1.6.0](https://github.com/apache/parquet-java/issues/1426) (is blocked by)

**Note**: *This issue was originally created as [PARQUET-194](https://issues.apache.org/jira/browse/PARQUET-194). 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 lire InitContext.getMergedKeyValueMetaData et l’utilisation existante de ParquetInputFormat décrite dans l’issue. Suivez la manière dont les métadonnées clé-valeur définies par l’utilisateur et en conflit provoquent actuellement l’échec de la fusion, puis définissez et documentez une stratégie basée sur un callback que les appelants peuvent fournir. Le travail est terminé lorsque des métadonnées compatibles peuvent être fusionnées sans remplacer ParquetInputFormat, tandis que le comportement par défaut reste couvert par des tests.

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

Évaluation

Stack technique
java
Domaine
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
35/100

Recevez les nouvelles issues par e-mail

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