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 Spanner-Instanz, aus der gelesen werden soll.
- spannerDatabaseId : Die Spanner-Datenbank, aus der gelesen werden soll.
- spannerTableId : Die Spanner-Tabelle, aus der gelesen werden soll.
- sqlQuery : Abfrage zum Lesen der Spanner-Tabelle.
- outputTableSpec : Der Speicherort der BigQuery-Tabelle, in die die Ausgabe geschrieben werden soll. Der Name muss das Format
<project>:<dataset>.<table_name>
haben. Das Schema der Tabelle muss mit Eingabeobjekten übereinstimmen.
Optionale Parameter
- spannerProjectId : Das Projekt, in dem sich die Spanner-Instanz befindet, aus der gelesen werden soll. Der Standardwert für diesen Parameter ist das Projekt, in dem die Dataflow-Pipeline ausgeführt wird.
- spannerRpcPriority : Die Priorität des Spanner-Jobs. Es muss einer der folgenden Werte sein: [HIGH, MEDIUM, LOW]. Die Standardeinstellung ist high.
- bigQuerySchemaPath : Der Cloud Storage-Pfad für das BigQuery-JSON-Schema. Wenn
createDisposition
nicht festgelegt oder auf CREATE_IF_NEEDED festgelegt ist, muss dieser Parameter angegeben werden. (Beispiel: gs://your-bucket/your-schema.json). - writeDisposition : BigQuery-WriteDisposition. Beispiel: WRITE_APPEND, WRITE_EMPTY oder WRITE_TRUNCATE. Die Standardeinstellung ist WRITE_APPEND.
- createDisposition : BigQuery CreateDisposition. Beispiel: CREATE_IF_NEEDED, CREATE_NEVER. Die Standardeinstellung ist CREATE_IF_NEEDED.
- useStorageWriteApi : Wenn diese Option aktiviert (auf "true") gesetzt ist, verwendet die Pipeline beim Schreiben der Daten in BigQuery die Storage Write API (siehe https://cloud.google.com/blog/products/data-analytics/streaming-data-into-bigquery-using-storage-write-api). Die Standardeinstellung ist "false".
- useStorageWriteApiAtLeastOnce : Dieser Parameter wird nur wirksam, wenn "BigQuery Storage Write API verwenden" aktiviert ist. Wenn diese Option aktiviert ist, wird für die Storage Write API die "Mindestens einmal"-Semantik verwendet. Andernfalls wird die "Genau einmal"-Semantik verwendet. Die Standardeinstellung ist "false".
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 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 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.