Connettore Flink Bigtable

Apache Flink è un framework di elaborazione dei flussi che consente di manipolare i dati in tempo reale. Se hai una tabella Bigtable, puoi utilizzare un connettore Flink Bigtable per trasmettere in streaming, serializzare e scrivere i dati dall'origine dati specificata a Bigtable. Il connettore ti consente di eseguire le seguenti operazioni utilizzando l'API Apache Flink Table o l'API Datastream:

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

Questo documento descrive il connettore Flink Bigtable e ciò che devi sapere prima di utilizzarlo. Prima di leggere questo documento, devi avere familiarità con Apache Flink, il modello di archiviazione Bigtable e le scritture Bigtable.

Per utilizzare il connettore, devi disporre di una tabella Bigtable preesistente che funga da sink dei dati. Devi creare le famiglie di colonne della tabella prima di avviare la pipeline; le famiglie di colonne non possono essere create in scrittura. Per saperne di più, consulta Creare e gestire tabelle.

Il connettore è disponibile su GitHub. Per informazioni sull'installazione del connettore, consulta il repository Flink Bigtable Connector. 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 AVRO GenericRecord
  • RowDataToRowMutationSerializer: per gli oggetti Flink RowData
  • FunctionRowMutationSerializer: Per la logica di serializzazione personalizzata che utilizza una funzione fornita

Puoi anche scegliere di creare un serializzatore personalizzato che eredita da BaseRowMutationSerializer.

Modalità di serializzazione

Quando utilizzi il connettore Flink, scegli una delle due modalità di serializzazione. La modalità specifica il modo in cui i dati di origine vengono serializzati per rappresentare le famiglie di colonne Bigtable e poi scritti nella tabella Bigtable. Devi utilizzare una modalità o l'altra.

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à a 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 ha un oggetto riga per ogni colonna nella famiglia di colonne Bigtable. Nella modalità righe nidificate, tutti i campi diversi dal campo di primo livello devono essere oggetti riga. Le righe con nidificazione doppia non sono supportate.

Elaborazione "exactly-once"

In Apache Flink, esattamente una volta significa che ogni record di dati in un flusso viene elaborato esattamente una volta, impedendo l'elaborazione duplicata o la perdita di dati, anche in caso di errori di sistema.

Una mutazione mutateRow di Bigtable è idempotente per impostazione predefinita, quindi una richiesta di scrittura con la stessa chiave di riga, famiglia di colonne, colonna, timestamp e valore non crea una nuova cella, anche se viene ritentata. Ciò significa che quando utilizzi Bigtable come sink di dati per un framework Apache Flink, ottieni automaticamente il comportamento exactly-once, a condizione che non modifichi il timestamp nei nuovi tentativi e che anche il resto della pipeline soddisfi i requisiti exactly-once.

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

Passaggi successivi