apache / apache/parquet-java

Enums are incorrectly handled by parquet-avro when using GenericRecords

Aperta
#1,952 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Component: Parquet Priority: Minor Type: bug
Lingua principale
Java
Stelle
3.1k
Fork
1.6k
Merge medio
3g 12h
PR unite (30g)
33

Descrizione

It appears that enums are handled incorrectly when reading parquet as generic records.

Looking at the code:
https://github.com/apache/parquet-mr/blob/master/parquet-avro/src/main/java/org/apache/parquet/avro/AvroIndexedRecordConverter.java#L236-L238

FieldEnumConverter falls back to a string representation when it can't find the corresponding enum class. This is problematic when trying to read parquet files generically without specific records on the classpath because the records will no longer match the schema. I believe a more correct approach would be to wrap the enums in GenericData.EnumSymbol:
https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java#L397

**Reporter**: [Igor Bernstein](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=igorbernstein)

**Note**: *This issue was originally created as [PARQUET-557](https://issues.apache.org/jira/browse/PARQUET-557). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia in parquet-avro/src/main/java/org/apache/parquet/avro/AvroIndexedRecordConverter.java, nel codice di FieldEnumConverter intorno alle righe 236-238, quindi confronta il comportamento di GenericData.EnumSymbol a cui si fa riferimento in GenericData.java di Avro. Verifica che le letture dei record generici preservino la rappresentazione enum dello schema invece di ricadere su una stringa; l'issue è completata quando i record risultanti corrispondono allo schema.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
data-engineering
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.