Connettore Beam HBase di Bigtable
Per aiutarti a utilizzare Bigtable in una pipeline Dataflow, sono disponibili due connettori I/O Bigtable Beam open source.
Se stai eseguendo la migrazione da HBase a Bigtable o se l'applicazione chiama l'API HBase, utilizza il connettore Beam HBase di Bigtable (CloudBigtableIO
) discusso in questa pagina.
In tutti gli altri casi, devi utilizzare il connettore Bigtable Beam (BigtableIO
) insieme al client Cloud Bigtable per Java, che funziona con le API Cloud Bigtable. Per iniziare a utilizzare quel connettore, consulta la pagina Connettore Bigtable Beam.
Per ulteriori informazioni sul modello di programmazione Apache Beam, consulta la documentazione di Beam.
Inizia a utilizzare HBase
Il connettore Beam HBase di Bigtable è scritto in Java ed è basato sul client HBase di Bigtable per Java. È compatibile con l'SDK Dataflow 2.x per Java, che si basa su Apache Beam. Il codice sorgente del connettore si trova su GitHub nel repository googleapis/java-bigtable-hbase.
Questa pagina fornisce una panoramica su come utilizzare le trasformazioni Read
e Write
.
Configura l'autenticazione
Per utilizzare gli esempi Java in questa pagina da un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
Crea credenziali di autenticazione locali per il tuo Account Google:
gcloud auth application-default login
Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Per informazioni sulla configurazione dell'autenticazione per un ambiente di produzione, consulta Configura le Credenziali predefinite dell'applicazione per il codice in esecuzione su Google Cloud.
Aggiungi il connettore a un progetto Maven
Per aggiungere il connettore Beam HBase di Bigtable a un progetto Maven, aggiungi l'artefatto Maven al file pom.xml
come dipendenza:
Specifica la configurazione Bigtable
Crea un'interfaccia delle opzioni per consentire gli input per l'esecuzione della pipeline:
Quando leggi o scrivi in Bigtable, devi fornire un oggetto di configurazione CloudBigtableConfiguration
. Questo oggetto specifica l'ID progetto e l'ID istanza della tua tabella, nonché il nome della tabella stessa:
Per la lettura, fornisci un oggetto di configurazione CloudBigtableScanConfiguration
, che ti consente di specificare un oggetto Apache HBase Scan
che limita e filtra i risultati di una lettura. Per maggiori dettagli, consulta Lettura da
Bigtable.
Leggi da Bigtable
Per leggere da una tabella Bigtable, applichi una trasformazione Read
al
risultato di un'operazione CloudBigtableIO.read
. La trasformazione Read
restituisce un PCollection
di oggetti HBase Result
, in cui ogni elemento in PCollection
rappresenta una singola riga nella tabella.
Per impostazione predefinita, un'operazione CloudBigtableIO.read
restituisce tutte le righe della tabella. Puoi utilizzare un oggetto HBase Scan
per limitare la lettura a
un intervallo di chiavi di riga all'interno della tabella o per applicare filtri ai risultati della
lettura. Per utilizzare un oggetto Scan
, includilo in
CloudBigtableScanConfiguration
.
Ad esempio, puoi aggiungere Scan
che restituisca solo la prima coppia chiave-valore
da ogni riga della tabella, il che è utile quando si conteggia il numero di righe
nella tabella:
Scrivi in Bigtable
Per scrivere in una tabella Bigtable, devi apply
un'operazione CloudBigtableIO.writeToTable
. Dovrai eseguire questa operazione su un PCollection
di oggetti Mutation
HBase, che possono includere oggetti Put
e Delete
.
La tabella Bigtable deve già esistere e deve essere definita la famiglia di colonne appropriata. Il connettore Dataflow non crea direttamente tabelle e famiglie di colonne. Puoi utilizzare l'interfaccia a riga di comando cbt
per creare una tabella e configurare le famiglie di colonne oppure puoi eseguire questa operazione in modo programmatico.
Prima di scrivere in Bigtable, devi creare la pipeline Dataflow in modo che le operazioni di put ed eliminazione possano essere serializzate sulla rete:
In generale, dovrai eseguire una trasformazione, ad esempio ParDo
, per formattare
i dati di output in una raccolta di oggetti HBase Put
o Delete
. L'esempio seguente mostra una trasformazione DoFn
che prende il valore attuale e lo utilizza come chiave di riga per un Put
. Puoi quindi scrivere gli oggetti Put
in
Bigtable.
Per abilitare il controllo del flusso di scrittura in batch, imposta BIGTABLE_ENABLE_BULK_MUTATION_FLOW_CONTROL
su true
. Questa funzionalità limita automaticamente la frequenza del traffico per le richieste di scrittura batch e consente alla scalabilità automatica di Bigtable di aggiungere o rimuovere nodi automaticamente per gestire il job Dataflow.
Ecco l'esempio di scrittura completo, inclusa la variante che consente il controllo del flusso di scrittura batch.