Vorlage „Cloud Spanner für Cloud Storage“

Mit der Vorlage „Managed Service for Apache Spark Cloud Spanner für Cloud Storage“ können Sie Daten aus Spanner-Datenbanken in Cloud Storage extrahieren.

Vorlage verwenden

Führen Sie die Vorlage mit der gcloud CLI oder der Managed Service for Apache Spark 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 Subnetzwerk angegeben ist, wird das Subnetzwerk 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 (unter gs://templates-binaries oder mit dem Befehl gcloud storage ls gs://templates-binaries können Sie die verfügbaren Vorlagenversionen auflisten).
  • INSTANCE: erforderlich. Cloud Spanner-Instanz-ID.
  • DATABASE: erforderlich. Cloud 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 oder postgresql. Standardmäßig ist googlesql festgelegt.
  • CLOUD_STORAGE_OUTPUT_PATH: erforderlich. Cloud Storage-Pfad, in dem die Ausgabe gespeichert wird.

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

  • FORMAT: erforderlich. Ausgabedatenformat. Optionen: avro, parquet, csv, oder json. Hinweis: Wenn Sie avro verwenden, müssen Sie dem gcloud CLI-Flag oder API-Feld jars "file:///usr/lib/spark/connector/spark-avro.jar" hinzufügen.

    Beispiel (das Präfix file:// verweist auf eine JAR-Datei von Managed Service for Apache Spark):

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... other jars]
  • MODE: erforderlich. Schreibmodus für die 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 können.
  • INPUT_PARTITION_COLUMN, LOWERBOUND, UPPERBOUND: optional. Wenn diese Parameter verwendet werden, müssen alle folgenden Parameter angegeben werden:
    • INPUT_PARTITION_COLUMN: Name der Spalte für die Partitionierung der Spanner-Eingabetabelle.
    • LOWERBOUND: Untergrenze der Spalte für die Partitionierung der Spanner-Eingabetabelle, die zum Bestimmen der Schrittweite der Partition verwendet wird.
    • UPPERBOUND: Obergrenze der Spalte für die Partitionierung der Spanner-Eingabetabelle, die zum Bestimmen der Schrittweite der Partition verwendet wird.
  • 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 in der Abfrage verwendeten Tabellennamen übereinstimmen und 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-Eigenschaft=value Paaren.
  • LABEL und LABEL_VALUE: optional. Durch Kommas getrennte Liste von label=value-Paaren.
  • LOG_LEVEL: optional. Logging-Ebene. Mögliche Werte: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE oder WARN. 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 inaktiven Daten mit einem von Google verwalteten Schlüssel verschlüsselt Google-owned and Google-managed encryption key.

    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://templates-binaries/TEMPLATE_VERSION/java/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://templates-binaries/TEMPLATE_VERSION/java/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://templates-binaries/TEMPLATE_VERSION/java/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 Subnetzwerk angegeben ist, wird das Subnetzwerk 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 (unter gs://templates-binaries oder mit dem Befehl gcloud storage ls gs://templates-binaries können Sie die verfügbaren Vorlagenversionen auflisten).
  • INSTANCE: erforderlich. Cloud Spanner-Instanz-ID.
  • DATABASE: erforderlich. Cloud 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 oder postgresql. Standardmäßig ist googlesql festgelegt.
  • CLOUD_STORAGE_OUTPUT_PATH: erforderlich. Cloud Storage-Pfad, in dem die Ausgabe gespeichert wird.

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

  • FORMAT: erforderlich. Ausgabedatenformat. Optionen: avro, parquet, csv, oder json. Hinweis: Wenn Sie avro verwenden, müssen Sie dem gcloud CLI-Flag oder API-Feld jars "file:///usr/lib/spark/connector/spark-avro.jar" hinzufügen.

    Beispiel (das Präfix file:// verweist auf eine JAR-Datei von Managed Service for Apache Spark):

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... other jars]
  • MODE: erforderlich. Schreibmodus für die 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 können.
  • INPUT_PARTITION_COLUMN, LOWERBOUND, UPPERBOUND: optional. Wenn diese Parameter verwendet werden, müssen alle folgenden Parameter angegeben werden:
    • INPUT_PARTITION_COLUMN: Name der Spalte für die Partitionierung der Spanner-Eingabetabelle.
    • LOWERBOUND: Untergrenze der Spalte für die Partitionierung der Spanner-Eingabetabelle, die zum Bestimmen der Schrittweite der Partition verwendet wird.
    • UPPERBOUND: Obergrenze der Spalte für die Partitionierung der Spanner-Eingabetabelle, die zum Bestimmen der Schrittweite der Partition verwendet wird.
  • 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 in der Abfrage verwendeten Tabellennamen übereinstimmen und 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-Eigenschaft=value Paaren.
  • LABEL und LABEL_VALUE: optional. Durch Kommas getrennte Liste von label=value-Paaren.
  • LOG_LEVEL: optional. Logging-Ebene. Mögliche Werte: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE oder WARN. 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 inaktiven Daten mit einem von Google verwalteten Schlüssel verschlüsselt Google-owned and Google-managed encryption key.

    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://templates-binaries/TEMPLATE_VERSION/java/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"
  }
}