Connettore Flink Bigtable

Apache Flink è un framework di elaborazione in streaming che ti consente di manipolare i dati in tempo reale. Se hai una tabella Bigtable, puoi utilizzare un connettore Flink Bigtable per eseguire lo streaming, la serializzazione e la scrittura dei dati dall'origine dati specificata in Bigtable. Il connettore ti consente di eseguire quanto segue utilizzando l'API Apache Flink Table o l'API Datastream:

  1. Crea una pipeline
  2. Serializza i valori dell'origine dati nelle voci di mutazione Bigtable
  3. Scrivi queste voci nella tabella Bigtable

Questo documento descrive il connettore Flink Bigtable e cosa occorre sapere prima di utilizzarlo. Prima di leggere questo documento, devi conoscere Apache Flink, il modello di archiviazione Bigtable e le scritture Bigtable.

Per utilizzare il connettore, devi disporre di una tabella Bigtable preesistente da utilizzare come destinazione dati. Devi creare le famiglie di colonne della tabella prima di avviare la pipeline; le famiglie di colonne non possono essere create al momento della scrittura. Per ulteriori informazioni, consulta Creare e gestire le tabelle.

Il connettore è disponibile su GitHub. Per informazioni sull'installazione del connettore, consulta il repository del connettore Flink Bigtable. Per esempi di codice che mostrano come utilizzare il connettore, consulta la directory flink-examples-gcp-bigtable.

Serializzatori

Il connettore Flink dispone di tre serializzatori integrati che puoi utilizzare per convertire i dati in voci di mutazione Bigtable:

  • GenericRecordToRowMutationSerializer: per gli oggetti GenericRecord AVRO
  • RowDataToRowMutationSerializer: per gli oggetti RowData di Flink
  • FunctionRowMutationSerializer: per la logica di serializzazione personalizzata che utilizza una funzione fornita

Puoi anche scegliere di creare il tuo serializzatore personalizzato ereditando da BaseRowMutationSerializer.

Modalità di serializzazione

Quando utilizzi il connettore Flink, puoi scegliere una delle due modalità di serializzazione. Il valore mode specifica in che modo i dati di origine vengono serializzati per rappresentare le famiglie di colonne Bigtable e poi scrivere la tabella Bigtable. Devi utilizzare una o l'altra modalità.

Modalità Famiglia di colonne

In modalità famiglia di colonne, tutti i dati vengono scritti in una singola famiglia di colonne specificata. I campi nidificati non sono supportati.

Modalità Righe nidificate

In modalità righe nidificate, ogni campo di primo livello rappresenta una famiglia di colonne. Il valore del campo di primo livello (RowKeyField) è un altro campo. Il valore di questo campo contiene un oggetto riga per ogni colonna della famiglia di colonne Bigtable. In modo righe nidificate, tutti i campi diversi da quello di primo livello devono essere oggetti riga. Le righe nidificate due volte non sono supportate.

Elaborazione "exactly-once"

In Apache Flink, esattamente una volta significa che ogni record di dati in uno stream viene elaborato esattamente una volta, impedendo qualsiasi elaborazione duplicata o perdita di dati, anche in caso di guasti del sistema.

Una mutazione mutateRow di Bigtable è idempotente per impostazione predefinita, pertanto una richiesta di scrittura che ha la stessa chiave riga, famiglia di colonne, colonna, timestamp e valore non crea una nuova cella, anche se viene riprovato. Ciò significa che quando utilizzi Bigtable come destinazione dati per un framework Apache Flink, ottieni automaticamente il comportamento esattamente una volta, a condizione che non modifichi il timestamp nei tentativi di nuovo invio e che anche il resto della pipeline soddisfi i requisiti di esattamente una volta.

Per ulteriori informazioni sulla semantica exactly-once, consulta Panoramica dell'elaborazione end-to-end exactly-once in Apache Flink.

Passaggi successivi