Bigtable HBase Beam-Connector
Für die Verwendung von Bigtable in einer Dataflow-Pipeline stehen zwei Open-Source-Bigtable Beam-E/A-Connectors zur Verfügung.
Wenn Sie von HBase zu Bigtable migrieren oder Ihre Anwendung die HBase API aufruft, verwenden Sie den auf dieser Seite beschriebenen Bigtable HBase Beam-Connector (CloudBigtableIO
).
In allen anderen Fällen sollten Sie den Bigtable Beam-Connector (BigtableIO
) in Verbindung mit dem Cloud Bigtable-Client für Java verwenden, der mit den Cloud Bigtable APIs funktioniert. Eine Einführung in diesen Connector finden Sie unter Bigtable Beam-Connector.
Weitere Informationen zum Apache Beam-Programmiermodell finden Sie in der Beam-Dokumentation.
Erste Schritte mit HBase
Der Bigtable HBase Beam-Connector ist in Java geschrieben und basiert auf dem Bigtable HBase-Client für Java. Er ist mit dem Dataflow SDK 2.x für Java kompatibel, das auf Apache Beam basiert. Den Quellcode des Connectors finden Sie auf GitHub im Repository googleapis/java-bigtable-hbase.
Auf dieser Seite erhalten Sie einen Überblick über die Verwendung von Read
- und Write
-Transformationen.
Authentifizierung einrichten
Wenn Sie die Java Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Weitere Informationen unter Set up authentication for a local development environment.
Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie unter Set up Application Default Credentials for code running on Google Cloud.
Connector zu einem Maven-Projekt hinzufügen
Wenn Sie den Bigtable HBase Beam-Connector einem Maven-Projekt hinzufügen möchten, fügen Sie das Maven-Artefakt als Abhängigkeit in die Datei pom.xml
ein:
Bigtable-Konfiguration angeben
Erstellen Sie eine Schnittstelle für Optionen, um Eingaben für die Ausführung der Pipeline zuzulassen:
Wenn Sie aus Bigtable lesen oder in Bigtable schreiben, müssen Sie ein CloudBigtableConfiguration
-Konfigurationsobjekt angeben. Dieses Objekt legt die Projekt-ID und die Instanz-ID für Ihre Tabelle sowie den Namen der Tabelle fest:
Stellen Sie für Lesevorgänge ein CloudBigtableScanConfiguration
-Konfigurationsobjekt bereit, mit dem Sie ein Scan
-Objekt von Apache HBase angeben können, das die Ergebnisse eines Lesevorgangs begrenzt und filtert. Weitere Informationen finden Sie unter Daten aus Bigtable lesen.
Aus Bigtable lesen
Zum Lesen aus einer Tabelle in Bigtable wenden Sie eine Read
-Transformation auf das Ergebnis eines CloudBigtableIO.read
-Vorgangs an. Die Read
-Transformation gibt eine PCollection
von HBase-Result
-Objekten zurück, wobei jedes Element in PCollection
eine einzelne Zeile in der Tabelle darstellt.
Standardmäßig gibt ein CloudBigtableIO.read
-Vorgang alle Zeilen in Ihrer Tabelle zurück. Sie können ein HBase-Scan
-Objekt verwenden, um den Lesevorgang auf einen Bereich von Zeilenschlüsseln in Ihrer Tabelle zu beschränken oder Filter auf die Ergebnisse des Lesevorgangs anzuwenden. Wenn Sie ein Scan
-Objekt verwenden möchten, fügen Sie es in CloudBigtableScanConfiguration
ein.
Sie können beispielsweise ein Scan
-Objekt einfügen, das nur das erste Schlüsselwertpaar aus jeder Zeile in der Tabelle zurückgibt. Dies ist zum Zählen der Zeilen in der Tabelle nützlich:
In Bigtable schreiben
Für den Schreibzugriff auf eine Bigtable-Tabelle wenden Sie mit apply
einen CloudBigtableIO.writeToTable
-Vorgang an. Sie müssen diesen Vorgang auf eine PCollection
von HBase-Mutation
-Objekten anwenden, die sowohl Put
- als auch Delete
-Objekte enthalten kann.
Die Bigtable-Tabelle muss bereits vorhanden sein und die entsprechenden Spaltenfamilien müssen definiert sein. Der Dataflow-Connector erstellt Tabellen und Spaltenfamilien nicht direkt. Sie können die cbt
-Befehlszeile verwenden
, um eine Tabelle zu erstellen und Spaltenfamilien einzurichten. Dies ist aber auch programmatisch möglich.
Bevor Sie in Bigtable schreiben, erstellen und initialisieren Sie Ihre Dataflow-Pipeline, sodass Puts und Deletes über das Netzwerk serialisiert werden können:
Im Allgemeinen müssen Sie eine Transformation wie ParDo
ausführen, um Ihre Ausgabedaten in eine Sammlung von HBase-Put
- oder -Delete
-Objekten zu formatieren. Das folgende Beispiel zeigt eine DoFn
-Transformation, die den aktuellen Wert als Zeilenschlüssel für ein Put
-Objekt verwendet. Sie können die Put
-Objekte dann in Bigtable schreiben.
Wenn Sie die Steuerung des Batch-Schreibvorgangs aktivieren möchten, setzen Sie BIGTABLE_ENABLE_BULK_MUTATION_FLOW_CONTROL
auf true
. Mit dieser Funktion wird der Traffic für Batch-Schreibanfragen automatisch begrenzt und Bigtable Autoscaling kann Knoten automatisch hinzufügen oder entfernen, um Ihren Dataflow-Job zu verarbeiten.
Hier ist das vollständige Beispiel für den Schreibvorgang, einschließlich der Variante, die die Ablaufsteuerung für Batch-Schreiben ermöglicht.