Bigtable HBase Beam-Connector
Damit Sie Bigtable in einer Dataflow-Pipeline verwenden können, sind zwei Open-Source-E/A-Connectors für Bigtable Beam verfügbar.
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 Anleitung zur Verwendung dieses Connectors 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 baut auf dem Bigtable-HBase-Client für Java auf. 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.
Diese Seite bietet einen Überblick über die Verwendung von Read
- und Write
-Transformationen.
Authentifizierung einrichten
Wenn Sie die Java-Beispiele auf dieser Seite aus einer lokalen Entwicklungsumgebung heraus verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:
gcloud auth application-default login
Weitere Informationen: Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Informationen zum Einrichten der Authentifizierung für eine Produktionsumgebung finden Sie unter Standardanmeldedaten für Anwendungen für Code einrichten, der in Google Cloud ausgeführt wird.
Connector einem Maven-Projekt hinzufügen
Wenn Sie einem Maven-Projekt den Bigtable-HBase Beam-Connector 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 zum Lesen ein CloudBigtableScanConfiguration
-Konfigurationsobjekt bereit, mit dem Sie ein Scan
-Objekt von Apache HBase angeben können, das die Ergebnisse eines Lesevorgangs einschränkt 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 spontan. Sie können mit der cbt
-Befehlszeile
eine Tabelle erstellen und Spaltenfamilien einrichten oder dies programmatisch tun.
Bevor Sie in Bigtable schreiben, müssen Sie Ihre Dataflow-Pipeline erstellen, damit 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 eine Put
verwendet. Sie können die Put
-Objekte dann in Bigtable schreiben.
Zum Aktivieren der Batch-Schreibflusssteuerung setzen Sie BIGTABLE_ENABLE_BULK_MUTATION_FLOW_CONTROL
auf true
. Diese Funktion begrenzt den Traffic für Batchschreibanfragen automatisch und ermöglicht, dass beim Autoscaling von Bigtable automatisch Knoten hinzugefügt oder entfernt werden, um Ihren Dataflow-Job zu verarbeiten.
Hier ist das vollständige Schreibbeispiel, einschließlich der Variante, die die Batch-Schreibvorgangssteuerung ermöglicht.