feat(avro): support LARGE_STRING, LARGE_BINARY, and LARGE_LIST in Avro datum writer

Aperta Adatta ai principianti
#1,103 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
77/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
cpp
Ambito
data

Direzione di ricerca

Leggi i tre TODO in src/iceberg/avro/avro_data_util.cc alle righe 751, 759 e 838, insieme ai casi STRING, BINARY e LIST esistenti a cui fanno riferimento. Aggiungi la gestione corrispondente per i grandi tipi di array Arrow, seguendo quelle implementazioni. Gli array LARGE_STRING, LARGE_BINARY e LARGE_LIST vengono scritti senza incontrare un caso non gestito; l’issue non specifica quali test eseguire.

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

Descrizione

The Avro datum writer in src/iceberg/avro/avro_data_util.cc currently handles arrow::Type::STRING, arrow::Type::BINARY, and arrow::Type::LIST but not their large variants. If an Arrow array with one of these large types is passed to the writer, it hits an unhandled case and fails.

The affected lines are:

  • avro_data_util.cc:751 — TODO(gangwu): support LARGE_STRING
  • avro_data_util.cc:759 — TODO(gangwu): support LARGE_BINARY
  • avro_data_util.cc:838 — TODO(gangwu): support LARGE_LIST

The fix is to add case ::arrow::Type::LARGE_STRING, case ::arrow::Type::LARGE_BINARY, and case ::arrow::Type::LARGE_LIST handling, mirroring the existing non-large implementations but casting to arrow::LargeStringArray, arrow::LargeBinaryArray, and arrow::LargeListArray respectively.

I'd like to work on this.
Lingua principale
C++
Stelle
227
Fork
142
Merge medio
3g 21m
PR unite (30g)
70

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/iceberg-cpp

Tutte le issue di apache/iceberg-cpp

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.