Die Vorlage "BigQuery für Bigtable" ist eine Batchpipeline, die Daten aus einer BigQuery-Tabelle in eine vorhandene Bigtable-Tabelle kopiert. Die Vorlage kann entweder die gesamte Tabelle oder bestimmte Datensätze mithilfe einer angegebenen Abfrage lesen.
Pipelineanforderungen
- Die BigQuery-Quelltabelle
- Die Bigtable-Tabelle muss vorhanden sein.
- Das Worker-Dienstkonto benötigt die Berechtigung
roles/bigquery.datasets.create
. Weitere Informationen finden Sie unter Einführung in IAM.
Vorlagenparameter
Erforderliche Parameter
- readIdColumn: Der Name der BigQuery-Spalte, in der die eindeutige Kennung der Zeile gespeichert ist.
- bigtableWriteInstanceId : Die ID der Bigtable-Instanz, die die Tabelle enthält.
- bigtableWriteTableId : Die ID der Bigtable-Tabelle, in die Daten geschrieben werden sollen.
- bigtableWriteColumnFamily : Der Name der Spaltenfamilie der Bigtable-Tabelle, in die Daten geschrieben werden sollen.
Optionale Parameter
- inputTableSpec: Die BigQuery-Tabelle, aus der gelesen werden soll. Format:
projectId:datasetId.tablename
. Wenn SieinputTableSpec
angeben, liest die Vorlage die Daten mithilfe der BigQuery Storage Read API direkt aus dem BigQuery-Speicher (https://cloud.google.com/bigquery/docs/reference/storage). Informationen zu Einschränkungen in der Storage Read API finden Sie unter https://cloud.google.com/bigquery/docs/reference/storage#limitations. Sie müssen entwederinputTableSpec
oderquery
angeben. Wenn Sie beide Parameter festlegen, verwendet die Vorlage den Parameterquery
. Beispiel: bigquery-project:dataset.input_table. - outputDeadletterTable : Die BigQuery-Tabelle für Nachrichten, die die Ausgabetabelle nicht erreicht haben, im Format <PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>. Wenn keine Tabelle vorhanden ist, wird sie während der Pipelineausführung erstellt. Falls nichts angegeben wird, wird
<outputTableSpec>_error_records
verwendet. (Beispiel: your-project-id:your-dataset.your-table-name). - query : Die SQL-Abfrage zum Lesen von Daten aus BigQuery. Wenn sich das BigQuery-Dataset in einem anderen Projekt als der Dataflow-Job befindet, geben Sie den vollständigen Dataset-Namen in der SQL-Abfrage an, z. B. <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. Standardmäßig verwendet der Parameter
query
GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), es sei dennuseLegacySql
isttrue
. Sie müssen entwederinputTableSpec
oderquery
angeben. Wenn Sie beide Parameter festlegen, verwendet die Vorlage den Parameterquery
. (Beispiel: Wählen Sie "*" aus sampledb.sample_table aus). - useLegacySql : Für die Verwendung des Legacy-SQL-Dialekts legen Sie "true" fest. Dieser Parameter gilt nur, wenn der Parameter
query
verwendet wird. Die Standardeinstellung ist "false". - queryLocation : Erforderlich, wenn aus einer autorisierten Ansicht ohne die Berechtigung der zugrunde liegenden Tabelle gelesen wird. (Beispiel: US).
- bigtableRpcAttemptTimeoutMs : Das Zeitlimit für jeden Bigtable-RPC-Versuch in Millisekunden.
- bigtableRpcTimeoutMs : Das Gesamtzeitlimit für einen Bigtable-RPC-Vorgang in Millisekunden.
- bigtableAdditionalRetryCodes : Die zusätzlichen Wiederholungscodes. (Beispiel: RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED).
- bigtableWriteAppProfile : Die ID des Bigtable-Anwendungsprofils, das für den Export verwendet werden soll. Wenn Sie kein Anwendungsprofil angeben, verwendet Bigtable das standardmäßige Anwendungsprofil (https://cloud.google.com/bigtable/docs/app-profiles#default-app-profile) der Instanz.
- bigtableWriteProjectId : Die ID des Google Cloud-Projekts, das die Bigtable-Instanz enthält, in die Daten geschrieben werden sollen.
- bigtableBulkWriteLatencyTargetMs : Das Latenzziel von Bigtable in Millisekunden für die latenzbasierte Drosselung.
- bigtableBulkWriteMaxRowKeyCount : Die maximale Anzahl von Zeilenschlüsseln in einem Batch-Schreibvorgang in Bigtable.
- bigtableBulkWriteMaxRequestSizeBytes : Maximale Byte, die pro Bigtable-Batchschreibvorgang enthalten sein sollen.
Führen Sie die Vorlage aus.
Console
- Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf. Zur Seite "Job aus Vorlage erstellen“
- Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
- Optional: Wählen Sie für Regionaler Endpunkt einen Wert aus dem Drop-down-Menü aus. Die Standardregion ist
us-central1
.Eine Liste der Regionen, in denen Sie einen Dataflow-Job ausführen können, finden Sie unter Dataflow-Standorte.
- Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Option the BigQuery to Bigtable templateaus.
- Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
- Klicken Sie auf Job ausführen.
gcloud
Führen Sie die Vorlage in der Shell oder im Terminal aus:
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Bigtable \ --parameters \ readIdColumn=READ_COLUMN_ID,\ inputTableSpec=INPUT_TABLE_SPEC,\ bigtableWriteInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableWriteTableId=BIGTABLE_TABLE_ID,\ bigtableWriteColumnFamily=BIGTABLE_COLUMN_FAMILY
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlREGION_NAME
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
READ_COLUMN_ID
: Ihre eindeutige BigQuery-ID-Spalte.INPUT_TABLE_SPEC
: ist der BigQuery-TabellennameBIGTABLE_INSTANCE_ID
: Ihre Bigtable-Instanz-ID.BIGTABLE_TABLE_ID
: Ihre Bigtable-Tabellen-ID.BIGTABLE_COLUMN_FAMILY
: die Bigtable-Tabellenspaltenfamilie.
API
Senden Sie eine HTTP-POST-Anfrage, um die Vorlage mithilfe der REST API auszuführen. Weitere Informationen zur API und ihren Autorisierungsbereichen finden Sie unter projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "readIdColumn": "READ_COLUMN_ID", "inputTableSpec": "INPUT_TABLE_SPEC", "bigtableWriteInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableWriteTableId": "BIGTABLE_TABLE_ID", "bigtableWriteColumnFamily": "BIGTABLE_COLUMN_FAMILY" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Bigtable", } }
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlLOCATION
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
READ_COLUMN_ID
: Ihre eindeutige BigQuery-ID-Spalte.INPUT_TABLE_SPEC
: ist der BigQuery-TabellennameBIGTABLE_INSTANCE_ID
: Ihre Bigtable-Instanz-ID.BIGTABLE_TABLE_ID
: Ihre Bigtable-Tabellen-ID.BIGTABLE_COLUMN_FAMILY
: die Bigtable-Tabellenspaltenfamilie.
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.