Die Vorlage „Cloud Spanner für BigQuery“ ist eine Batchpipeline, die Daten aus einer Spanner-Tabelle liest und in BigQuery schreibt.
Pipelineanforderungen
- Die Spanner-Quelltabelle muss vor der Pipelineausführung vorhanden sein.
- Das BigQuery-Dataset muss vorhanden sein, bevor Sie die Pipeline ausführen.
- Eine JSON-Datei, die Ihr BigQuery-Schema beschreibt.
Die Datei muss ein JSON-Array der obersten Ebene mit dem Namen
fields
enthalten. Der Inhalt des Arraysfields
muss das folgende Muster haben:{"name": "COLUMN_NAME", "type": "DATA_TYPE"}
.Der folgende JSON-Code beschreibt ein BigQuery-Beispielschema:
{ "fields": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
Die Batchvorlage „Spanner für BigQuery“ unterstützt nicht den Import von Daten in Felder des Typs
STRUCT
(Eintrag) in der BigQuery-Zieltabelle.
Vorlagenparameter
Erforderliche Parameter
- spannerInstanceId : Die Instanz-ID der Spanner-Datenbank, aus der gelesen werden soll.
- spannerDatabaseId : Die Datenbank-ID der Spanner-Datenbank, die exportiert werden soll.
- outputTableSpec : Der Speicherort der BigQuery-Ausgabetabelle, in die die Ausgabe geschrieben werden soll. Beispiel:
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>
.Abhängig von der angegebenencreateDisposition
kann die Ausgabetabelle automatisch mit dem vom Nutzer angegebenen Avro-Schema erstellt werden.
Optionale Parameter
- spannerProjectId : ID des Projekts, in dem sich die Spanner-Datenbank befindet. Der Standardwert für diesen Parameter ist das Projekt, in dem die Dataflow-Pipeline ausgeführt wird.
- spannerTableId : Der Tabellenname der zu exportierenden Spanner-Datenbank. Wird ignoriert, wenn sqlQuery festgelegt ist.
- spannerRpcPriority: Die Anfragepriorität (https://cloud.google.com/spanner/docs/reference/rest/v1/RequestOptions) für Spanner-Aufrufe. Mögliche Werte sind
HIGH
,MEDIUM
undLOW
. Der Standardwert istHIGH
. - sqlQuery : Die SQL-Abfrage zum Lesen von Daten aus der Spanner-Datenbank. Erforderlich, wenn „spannerTableId“ leer ist.
- bigQuerySchemaPath : Der Cloud Storage-Pfad (gs://) zur JSON-Datei, die Ihr BigQuery-Schema definiert. (Beispiel: gs://your-bucket/your-schema.json).
- writeDisposition : Der BigQuery-WriteDisposition-Wert (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Beispiel:
WRITE_APPEND
,WRITE_EMPTY
oderWRITE_TRUNCATE
. Die Standardeinstellung istWRITE_APPEND
. - createDisposition : BigQuery-CreateDisposition (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Beispiele:
CREATE_IF_NEEDED
undCREATE_NEVER
. Die Standardeinstellung istCREATE_IF_NEEDED
. - useStorageWriteApi : Wenn
true
, verwendet die Pipeline die BigQuery Storage Write API (https://cloud.google.com/bigquery/docs/write-api). Der Standardwert istfalse
. Weitere Informationen finden Sie unter „Storage Write API verwenden“ (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce: Gibt bei Verwendung der Storage Write API die Schreibsemantik an. Wenn Sie die "Mindestens einmal"-Semantik verwenden möchten (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), legen Sie diesen Parameter auf
true
fest. Wenn Sie die "Genau einmal"-Semantik verwenden möchten, legen Sie den Parameter auffalse
fest. Dieser Parameter gilt nur, wennuseStorageWriteApi
true
ist. Der Standardwert istfalse
.
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 Spanner to BigQuery 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 \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabaseId=SPANNER_DATABASE_ID,\ spannerTableId=SPANNER_TABLE_ID,\ sqlQuery=SQL_QUERY,\ outputTableSpec=OUTPUT_TABLE_SPEC,\
Ersetzen Sie dabei Folgendes:
JOB_NAME
: ein eindeutiger Jobname Ihrer WahlVERSION
: 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/.
REGION_NAME
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
SPANNER_INSTANCE_ID
: Die Spanner-Instanz-IDSPANNER_DATABASE_ID
: Die Spanner-Datenbank-IDSPANNER_TABLE_ID
: der Name der Spanner-TabelleSQL_QUERY
: Die SQL-Abfrage.OUTPUT_TABLE_SPEC
: der Standort der BigQuery-Tabelle
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 { "launchParameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabaseId": "SPANNER_DATABASE_ID", "spannerTableId": "SPANNER_TABLE_ID", "sqlQuery": "SQL_QUERY", "outputTableSpec": "OUTPUT_TABLE_SPEC", }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex", "environment": { "maxWorkers": "10" } } }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlVERSION
: 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/.
LOCATION
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
SPANNER_INSTANCE_ID
: Die Spanner-Instanz-IDSPANNER_DATABASE_ID
: Die Spanner-Datenbank-IDSPANNER_TABLE_ID
: der Name der Spanner-TabelleSQL_QUERY
: Die SQL-Abfrage.OUTPUT_TABLE_SPEC
: der Standort der BigQuery-Tabelle
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.