Vorlage „Cloud Spanner für Cloud Storage“
Verwenden Sie die Dataproc-Serverless-Vorlage „Cloud Spanner für Cloud Storage“, um Daten aus Spanner-Datenbanken in Cloud Storage zu extrahieren.
Vorlage verwenden
Führen Sie die Vorlage mit der gcloud CLI oder der Dataproc API aus.
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- PROJECT_ID: erforderlich. Ihre Google Cloud Projekt-ID, die in den IAM-Einstellungen aufgeführt ist.
- REGION: erforderlich. Compute Engine-Region
- SUBNET: Optional. Wenn kein Subnetz angegeben ist, wird das Subnetz in der angegebenen REGION im
default
-Netzwerk ausgewählt.Beispiel:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- TEMPLATE_VERSION: erforderlich. Geben Sie
latest
für die neueste Vorlagenversion oder das Datum einer bestimmten Version an, z. B.2023-03-17_v0.1.0-beta
. Rufen Sie gs://dataproc-templates-binaries auf oder führen Siegcloud storage ls gs://dataproc-templates-binaries
aus, um eine Liste der verfügbaren Vorlagenversionen aufzurufen. - INSTANCE: erforderlich. Spanner-Instanz-ID.
- DATABASE: erforderlich. Spanner-Datenbank-ID.
- TABLE: erforderlich. Name der Spanner-Eingabetabelle oder eine SQL-Abfrage für die Spanner-Eingabetabelle.
Beispiel (die SQL-Abfrage muss in Klammern stehen):
(select * from TABLE)
- SPANNER_JDBC_DIALECT: erforderlich. Spanner-JDBC-Dialekt.
Optionen:
googlesql
oderpostgresql
Die Standardeinstellung istgooglesql
. - CLOUD_STORAGE_OUTPUT_PATH: erforderlich. Cloud Storage-Pfad, unter dem die Ausgabe gespeichert werden soll.
Beispiel:
gs://example-bucket/example-folder/
- FORMAT: erforderlich. Ausgabedatenformat. Optionen:
avro
,parquet
,csv
oderjson
. Hinweis:Wennavro
, müssen Sie demjars
-Flag oder API-Feld der gcloud CLI „file:///usr/lib/spark/connector/spark-avro.jar
“ hinzufügen.Beispiel (das Präfix
file://
verweist auf eine Dataproc Serverless-JAR-Datei):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[ ... other jars] - MODE: erforderlich. Schreibmodus für Cloud Storage-Ausgabe.
Optionen:
append
,overwrite
,ignore
odererrorifexists
. - NUM_PARTITIONS: Optional. Die maximale Anzahl von Partitionen, die für die Parallelität von Tabellenlese- und ‑schreibvorgängen verwendet werden können.
- INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND: Optional. Bei Verwendung müssen alle folgenden Parameter angegeben werden:
- INPUT_PARTITION_COLUMN: Name der Partitionsspalte der Spanner-Eingabetabelle.
- LOWERBOUND: Untergrenze der Spanner-Tabellenpartitionsspalte, die zum Bestimmen des Partitionsschritts verwendet wird.
- UPPERBOUND:Obergrenze der Spanner-Tabellenpartitionsspalte, anhand derer der Partitionsschritt festgelegt wird.
- TEMP_VIEW und TEMP_QUERY: Optional. Mit diesen beiden optionalen Parametern können Sie eine Spark SQL-Transformation beim Laden von Daten in Cloud Storage anwenden. TEMP_VIEW muss mit dem Tabellennamen in der Abfrage übereinstimmen. TEMP_QUERY ist die Abfrageanweisung.
- SERVICE_ACCOUNT: Optional. Wenn nicht angegeben, wird das Compute Engine-Standarddienstkonto verwendet.
- PROPERTY und PROPERTY_VALUE:
Optional. Durch Kommas getrennte Liste von Spark-Property=
value
-Paaren. - LABEL und LABEL_VALUE: Optional. Durch Kommas getrennte Liste von
label
=value
-Paaren. - LOG_LEVEL: Optional. Protokollierungsebene. Kann
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oderWARN
sein. Standard:INFO
. -
KMS_KEY: Optional. Der Cloud Key Management Service-Schlüssel, der für die Verschlüsselung verwendet werden soll. Wenn kein Schlüssel angegeben ist, werden die Daten inaktiv verschlüsselt. Dazu wird ein Google-owned and Google-managed encryption keyverwendet.
Beispiel:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud dataproc batches submit spark \ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate \ --version="1.2" \ --project="PROJECT_ID" \ --region="REGION" \ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" \ --subnet="SUBNET" \ --kms-key="KMS_KEY" \ --service-account="SERVICE_ACCOUNT" \ --properties="PROPERTY=PROPERTY_VALUE" \ --labels="LABEL=LABEL_VALUE" \ -- --template=SPANNERTOGCS \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty project.id="PROJECT_ID" \ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" \ --templateProperty spanner.gcs.input.database.id="DATABASE" \ --templateProperty spanner.gcs.input.table.id="TABLE" \ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" \ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" \ --templateProperty spanner.gcs.output.gcs.format="FORMAT" \ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" \ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" \ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" \ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" \ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" \ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" \ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
Windows (PowerShell)
gcloud dataproc batches submit spark ` --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ` --version="1.2" ` --project="PROJECT_ID" ` --region="REGION" ` --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ` --subnet="SUBNET" ` --kms-key="KMS_KEY" ` --service-account="SERVICE_ACCOUNT" ` --properties="PROPERTY=PROPERTY_VALUE" ` --labels="LABEL=LABEL_VALUE" ` -- --template=SPANNERTOGCS ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty project.id="PROJECT_ID" ` --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ` --templateProperty spanner.gcs.input.database.id="DATABASE" ` --templateProperty spanner.gcs.input.table.id="TABLE" ` --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ` --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ` --templateProperty spanner.gcs.output.gcs.format="FORMAT" ` --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ` --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ` --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ` --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ` --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ` --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ` --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
Windows (cmd.exe)
gcloud dataproc batches submit spark ^ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^ --version="1.2" ^ --project="PROJECT_ID" ^ --region="REGION" ^ --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ^ --subnet="SUBNET" ^ --kms-key="KMS_KEY" ^ --service-account="SERVICE_ACCOUNT" ^ --properties="PROPERTY=PROPERTY_VALUE" ^ --labels="LABEL=LABEL_VALUE" ^ -- --template=SPANNERTOGCS ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ^ --templateProperty spanner.gcs.input.database.id="DATABASE" ^ --templateProperty spanner.gcs.input.table.id="TABLE" ^ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ^ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ^ --templateProperty spanner.gcs.output.gcs.format="FORMAT" ^ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ^ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ^ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ^ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ^ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ^ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ^ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: erforderlich. Ihre Google Cloud Projekt-ID, die in den IAM-Einstellungen aufgeführt ist.
- REGION: erforderlich. Compute Engine-Region
- SUBNET: Optional. Wenn kein Subnetz angegeben ist, wird das Subnetz in der angegebenen REGION im
default
-Netzwerk ausgewählt.Beispiel:
projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- TEMPLATE_VERSION: erforderlich. Geben Sie
latest
für die neueste Vorlagenversion oder das Datum einer bestimmten Version an, z. B.2023-03-17_v0.1.0-beta
. Rufen Sie gs://dataproc-templates-binaries auf oder führen Siegcloud storage ls gs://dataproc-templates-binaries
aus, um eine Liste der verfügbaren Vorlagenversionen aufzurufen. - INSTANCE: erforderlich. Spanner-Instanz-ID.
- DATABASE: erforderlich. Spanner-Datenbank-ID.
- TABLE: erforderlich. Name der Spanner-Eingabetabelle oder eine SQL-Abfrage für die Spanner-Eingabetabelle.
Beispiel (die SQL-Abfrage muss in Klammern stehen):
(select * from TABLE)
- SPANNER_JDBC_DIALECT: erforderlich. Spanner-JDBC-Dialekt.
Optionen:
googlesql
oderpostgresql
Die Standardeinstellung istgooglesql
. - CLOUD_STORAGE_OUTPUT_PATH: erforderlich. Cloud Storage-Pfad, unter dem die Ausgabe gespeichert werden soll.
Beispiel:
gs://example-bucket/example-folder/
- FORMAT: erforderlich. Ausgabedatenformat. Optionen:
avro
,parquet
,csv
oderjson
. Hinweis:Wennavro
, müssen Sie demjars
-Flag oder API-Feld der gcloud CLI „file:///usr/lib/spark/connector/spark-avro.jar
“ hinzufügen.Beispiel (das Präfix
file://
verweist auf eine Dataproc Serverless-JAR-Datei):--jars=file:///usr/lib/spark/connector/spark-avro.jar,
[ ... other jars] - MODE: erforderlich. Schreibmodus für Cloud Storage-Ausgabe.
Optionen:
append
,overwrite
,ignore
odererrorifexists
. - NUM_PARTITIONS: Optional. Die maximale Anzahl von Partitionen, die für die Parallelität von Tabellenlese- und ‑schreibvorgängen verwendet werden können.
- INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND: Optional. Bei Verwendung müssen alle folgenden Parameter angegeben werden:
- INPUT_PARTITION_COLUMN: Name der Partitionsspalte der Spanner-Eingabetabelle.
- LOWERBOUND: Untergrenze der Spanner-Tabellenpartitionsspalte, die zum Bestimmen des Partitionsschritts verwendet wird.
- UPPERBOUND:Obergrenze der Spanner-Tabellenpartitionsspalte, anhand derer der Partitionsschritt festgelegt wird.
- TEMP_VIEW und TEMP_QUERY: Optional. Mit diesen beiden optionalen Parametern können Sie eine Spark SQL-Transformation beim Laden von Daten in Cloud Storage anwenden. TEMP_VIEW muss mit dem Tabellennamen in der Abfrage übereinstimmen. TEMP_QUERY ist die Abfrageanweisung.
- SERVICE_ACCOUNT: Optional. Wenn nicht angegeben, wird das Compute Engine-Standarddienstkonto verwendet.
- PROPERTY und PROPERTY_VALUE:
Optional. Durch Kommas getrennte Liste von Spark-Property=
value
-Paaren. - LABEL und LABEL_VALUE: Optional. Durch Kommas getrennte Liste von
label
=value
-Paaren. - LOG_LEVEL: Optional. Protokollierungsebene. Kann
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
oderWARN
sein. Standard:INFO
. -
KMS_KEY: Optional. Der Cloud Key Management Service-Schlüssel, der für die Verschlüsselung verwendet werden soll. Wenn kein Schlüssel angegeben ist, werden die Daten inaktiv verschlüsselt. Dazu wird ein Google-owned and Google-managed encryption keyverwendet.
Beispiel:
projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
HTTP-Methode und URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches
JSON-Text anfordern:
{ "environmentConfig":{ "executionConfig":{ "subnetworkUri":"SUBNET", "kmsKey": "KMS_KEY", "serviceAccount": "SERVICE_ACCOUNT" } }, "labels": { "LABEL": "LABEL_VALUE" }, "runtimeConfig": { "version": "1.2", "properties": { "PROPERTY": "PROPERTY_VALUE" } }, "sparkBatch":{ "mainClass":"com.google.cloud.dataproc.templates.main.DataProcTemplate", "args":[ "--template","SPANNERTOGCS", "--templateProperty","log.level=LOG_LEVEL", "--templateProperty","project.id=PROJECT_ID", "--templateProperty","spanner.gcs.input.spanner.id=INSTANCE", "--templateProperty","spanner.gcs.input.database.id=DATABASE", "--templateProperty","spanner.gcs.input.table.id=TABLE", "--templateProperty","spanner.gcs.output.gcs.path=CLOUD_STORAGE_OUTPUT_PATH", "--templateProperty","spanner.gcs.output.gcs.saveMode=MODE", "--templateProperty","spanner.gcs.output.gcs.format=FORMAT", "--templateProperty","spanner.gcs.input.sql.partitionColumn=INPUT_PARTITION_COLUMN", "--templateProperty","spanner.gcs.input.sql.lowerBound=LOWERBOUND", "--templateProperty","spanner.gcs.input.sql.upperBound=UPPERBOUND", "--templateProperty","spanner.gcs.input.sql.numPartitions=NUM_PARTITIONS", "--templateProperty","spanner.gcs.temp.table=TEMP_VIEW", "--templateProperty","spanner.gcs.temp.query=TEMP_QUERY", "--templateProperty spanner.jdbc.dialect=SPANNER_JDBC_DIALECT" ], "jarFileUris":[ "file:///usr/lib/spark/connector/spark-avro.jar", "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ] } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata", "batch": "projects/PROJECT_ID/locations/REGION/batches/BATCH_ID", "batchUuid": "de8af8d4-3599-4a7c-915c-798201ed1583", "createTime": "2023-02-24T03:31:03.440329Z", "operationType": "BATCH", "description": "Batch" } }