Provide callback to allow user defined key-value metadata merging strategy
- 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