Bigtable HBase Beam-Connector
Damit Sie Bigtable in einer Dataflow-Pipeline verwenden können, stehen zwei Open-Source-Bigtable Beam I/O-Connectors zur Verfügung.
Wenn Sie von HBase zu Bigtable migrieren oder Ihre Anwendung die HBase API aufruft, verwenden Sie den Bigtable HBase Beam-Connector (CloudBigtableIO), der auf dieser Seite beschrieben wird.
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. Informationen zu den ersten Schritten mit diesem
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 wird beschrieben, wie Sie die Transformationen Read und Write verwenden.
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 Sie dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzer konto:
gcloud auth application-default login
Wenn Sie Cloud Shell verwenden, ist dies nicht erforderlich.
Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.
Weitere Informationen finden Sie unter 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 ausgeführt wird 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 der 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 das CLI
cbt 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 Put- oder Delete-Objekten von HBase 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 Flusssteuerung für Batchschreibvorgänge aktivieren möchten, setzen Sie
BIGTABLE_ENABLE_BULK_MUTATION_FLOW_CONTROL auf true. Mit dieser Funktion wird der Traffic für Batchschreibanfragen 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 Flusssteuerung für Batchschreibvorgänge aktiviert.