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, aufgeführt in die IAM-Einstellungen.
  • 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 Sie gcloud 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 SQL-Abfrage in der Spanner-Eingabetabelle.

    Beispiel (die SQL-Abfrage muss in Klammern stehen): (select * from TABLE)

  • CLOUD_STORAGE_OUTPUT_PATH: erforderlich. Cloud Storage-Pfad, unter dem die Ausgabe gespeichert wird.

    Beispiel: gs://example-bucket/example-folder/

  • FORMAT: erforderlich. Format der Ausgabedaten. Optionen: avro, parquet, csv oder json. Hinweis: Wenn avro, müssen Sie dem jars-Flag oder API-Feld der gcloud CLI „file:///usr/lib/spark/external/spark-avro.jar“ hinzufügen.

    Beispiel (das Präfix file:// verweist auf eine Dataproc Serverless-JAR-Datei):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... other jars]
  • MODE: erforderlich. Schreibmodus für Cloud Storage-Ausgabe. Optionen: append, overwrite, ignore oder errorifexists.
  • NUM_PARTITIONS: Optional. Die maximale Anzahl von Partitionen, die für die Parallelität von Tabellenlese- und ‑schreibvorgängen verwendet werden kann.
  • INPUT_PARTITION_COLUMN, LOWERBOUND, UPPERBOUND: Optional. Alle der folgenden müssen 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-Eingabetabellenpartitionsspalte, mit der bestimmt wird Partition stride ein.
  • TEMP_VIEW und TEMP_QUERY: Optional. Mit diesen beiden optionalen Parametern können Sie eine Spark SQL-Transformation anwenden, während Daten in Cloud Storage geladen werden. 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-Paare.
  • LABEL und LABEL_VALUE: Optional. Durch Kommas getrennte Liste von label=value-Paaren.
  • LOG_LEVEL: Optional. Protokollebene. Kann einer der folgenden Werte sein: ALL, DEBUG, ERROR, FATAL, INFO OFF, TRACE oder WARN. Standardeinstellung: 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 Daten im inaktiven Zustand mit einem von Google verwalteten Schlüssel verschlüsselt.

    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.1" \
    --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"

Windows (PowerShell)

gcloud dataproc batches submit spark `
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate `
    --version="1.1" `
    --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"

Windows (cmd.exe)

gcloud dataproc batches submit spark ^
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^
    --version="1.1" ^
    --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"

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: erforderlich. Ihre Google Cloud-Projekt-ID, die unter 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 als aktuelle Vorlagenversion oder das Datum einer bestimmten Version, z. B. 2023-03-17_v0.1.0-beta (siehe gs://dataproc-templates-binaries) oder führen Sie gcloud storage ls gs://dataproc-templates-binaries aus, um die verfügbaren Vorlagenversionen aufzulisten.
  • INSTANCE: erforderlich. Spanner-Instanz-ID.
  • DATABASE: erforderlich. Spanner-Datenbank-ID.
  • TABLE: erforderlich. Name der Spanner-Eingabetabelle oder SQL-Abfrage in der Spanner-Eingabetabelle.

    Beispiel (die SQL-Abfrage muss in Klammern stehen): (select * from TABLE)

  • CLOUD_STORAGE_OUTPUT_PATH: erforderlich. Cloud Storage-Pfad, unter dem die Ausgabe gespeichert wird.

    Beispiel: gs://example-bucket/example-folder/

  • FORMAT: erforderlich. Format der Ausgabedaten. Optionen: avro, parquet, csv oder json. Hinweis: Wenn avro, müssen Sie dem jars-Flag oder API-Feld der gcloud CLI „file:///usr/lib/spark/external/spark-avro.jar“ hinzufügen.

    Beispiel (das Präfix file:// verweist auf eine Dataproc Serverless-JAR-Datei):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... other jars]
  • MODE: erforderlich. Schreibmodus für Cloud Storage-Ausgabe. Optionen: append, overwrite, ignore oder errorifexists.
  • NUM_PARTITIONS: Optional. Die maximale Anzahl von Partitionen, die für die Parallelität von Tabellenlese- und ‑schreibvorgängen verwendet werden kann.
  • INPUT_PARTITION_COLUMN, LOWERBOUND, UPPERBOUND: Optional. Alle der folgenden müssen 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-Eingabetabellenpartitionsspalte, mit der bestimmt wird Partition stride ein.
  • TEMP_VIEW und TEMP_QUERY: Optional. Mit diesen beiden optionalen Parametern können Sie eine Spark SQL-Transformation anwenden, während Daten in Cloud Storage geladen werden. 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. Protokollebene. Kann einer der folgenden Werte sein: ALL, DEBUG, ERROR, FATAL, INFO OFF, TRACE oder WARN. Standardeinstellung: 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 Daten im inaktiven Zustand mit einem von Google verwalteten Schlüssel verschlüsselt.

    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.1",
    "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"
    ],
    "jarFileUris":[
      "file:///usr/lib/spark/external/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"
  }
}