apache / apache/parquet-java

Parquet proto writer de-nest Protobuf wrapper classes

Aperta
#2,336 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Component: Java Component: Parquet Priority: Major Type: enhancement
Lingua principale
Java
Stelle
3.1k
Fork
1.6k
Merge medio
3g 12h
PR unite (30g)
33

Descrizione

Existing Parquet protobuf writer support preserves the structure of any Protobuf Message objects.  This works well in most cases. However, when dealing with [Protobuf wrapper messages](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/wrappers.proto), users may prefer directly writing the de-nested value into the Parquet files, for ease of querying them directly (in query engine such as Hive/Presto). 

Proposal: 
- Implement a control flag, e.g., enableDenestingWrappers, to control whether or not to denest Protobuf wrapper classes. 
- When this flag is set to true, write the Protobuf wrapper classes as single primitive fields, based on the type of the wrapped **value** field.
 

|Protobuf Type|Parquet Type|
|
|-|-|-|
|BoolValue|boolean|
|
|BytesValue|binary|
|
|DoubleValue|double|
|
|FloatValue|float|
|
|Int32Value|int64 (32-bit, signed)|
|
|Int64Value|int64 (64-bit, signed)|
|
|StringValue|binary (string)|
|
|UInt32Value|int64 (32-bit, unsigned)|
|
|UInt64Value|int64 (64-bit, unsigned)|



 |

**Reporter**: [Ying Xu](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=yxu-apache)

**Note**: *This issue was originally created as [PARQUET-1595](https://issues.apache.org/jira/browse/PARQUET-1595). 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 individuando il supporto esistente per il writer protobuf di Parquet e il modo in cui mappa gli oggetti Protobuf Message nei campi Parquet. Definisci il flag di controllo per wrapper denesting e confronta il suo output con le mappature wrapper-to-primitive elencate. Il lavoro è completato quando il flag controlla se i wrapper rimangono annidati o vengono scritti come singoli campi primitivi.

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

Valutazione

Stack tecnologico
java
Ambito
data-engineering
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.