Vorlage „Cloud Storage für Cloud Spanner“

Mit der Vorlage „Managed Service for Apache Spark Cloud Storage für Spanner“ können Sie Daten aus Cloud Storage in Spanner 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://dataproc-templates-binaries oder mit dem Befehl gcloud storage ls gs://dataproc-templates-binaries können Sie die verfügbaren Vorlagenversionen auflisten).
  • CLOUD_STORAGE_INPUT_PATH: erforderlich. Cloud Storage-Pfad, aus dem Eingabedaten gelesen werden.

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

  • FORMAT: erforderlich. Format für Eingabedaten. Optionen: avro, parquet oder orc. Hinweis: Wenn Sie avro verwenden, müssen Sie "file:///usr/lib/spark/connector/spark-avro.jar" dem jars gcloud CLI-Flag oder dem API-Feld 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]
  • INSTANCE: erforderlich. Cloud Spanner-Instanz-ID.
  • DATABASE: erforderlich. Cloud Spanner-Datenbank-ID.
  • TABLE: erforderlich. Name der Cloud Spanner-Ausgabetabelle.
  • SPANNER_JDBC_DIALECT: erforderlich. Cloud Spanner-JDBC-Dialekt. Optionen: googlesql oder postgresql. Standardmäßig ist googlesql festgelegt.
  • MODE: optional. Schreibmodus für die Cloud Spanner-Ausgabe. Optionen: Append, Overwrite, Ignore oder ErrorifExists. Standardmäßig ist ErrorifExists festgelegt.
  • PRIMARY_KEY: erforderlich. Durch Kommas getrennte Primärschlüsselspalten, die beim Erstellen der Cloud Spanner-Ausgabetabelle erforderlich sind.
  • BATCHSIZE: optional. Anzahl der Datensätze, die in einem Roundtrip in die Cloud Spanner-Tabelle eingefügt werden sollen. Standardwert ist 1.000.
  • 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. Standardwert: 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 inaktive Daten mit einem 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://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 GCSTOSPANNER \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty project.id="PROJECT_ID" \
    --templateProperty gcs.spanner.input.format="FORMAT" \
    --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" \
    --templateProperty gcs.spanner.output.instance="INSTANCE" \
    --templateProperty gcs.spanner.output.database="DATABASE" \
    --templateProperty gcs.spanner.output.table="TABLE" \
    --templateProperty gcs.spanner.output.saveMode="MODE" \
    --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" \
    --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" \
    --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 GCSTOSPANNER `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty project.id="PROJECT_ID" `
    --templateProperty gcs.spanner.input.format="FORMAT" `
    --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" `
    --templateProperty gcs.spanner.output.instance="INSTANCE" `
    --templateProperty gcs.spanner.output.database="DATABASE" `
    --templateProperty gcs.spanner.output.table="TABLE" `
    --templateProperty gcs.spanner.output.saveMode="MODE" `
    --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" `
    --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" `
    --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 GCSTOSPANNER ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty project.id="PROJECT_ID" ^
    --templateProperty gcs.spanner.input.format="FORMAT" ^
    --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" ^
    --templateProperty gcs.spanner.output.instance="INSTANCE" ^
    --templateProperty gcs.spanner.output.database="DATABASE" ^
    --templateProperty gcs.spanner.output.table="TABLE" ^
    --templateProperty gcs.spanner.output.saveMode="MODE" ^
    --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" ^
    --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" ^
    --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://dataproc-templates-binaries oder mit dem Befehl gcloud storage ls gs://dataproc-templates-binaries können Sie die verfügbaren Vorlagenversionen auflisten).
  • CLOUD_STORAGE_INPUT_PATH: erforderlich. Cloud Storage-Pfad, aus dem Eingabedaten gelesen werden.

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

  • FORMAT: erforderlich. Format für Eingabedaten. Optionen: avro, parquet oder orc. Hinweis: Wenn Sie avro verwenden, müssen Sie "file:///usr/lib/spark/connector/spark-avro.jar" dem jars gcloud CLI-Flag oder dem API-Feld 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]
  • INSTANCE: erforderlich. Cloud Spanner-Instanz-ID.
  • DATABASE: erforderlich. Cloud Spanner-Datenbank-ID.
  • TABLE: erforderlich. Name der Cloud Spanner-Ausgabetabelle.
  • SPANNER_JDBC_DIALECT: erforderlich. Cloud Spanner-JDBC-Dialekt. Optionen: googlesql oder postgresql. Standardmäßig ist googlesql festgelegt.
  • MODE: optional. Schreibmodus für die Cloud Spanner-Ausgabe. Optionen: Append, Overwrite, Ignore oder ErrorifExists. Standardmäßig ist ErrorifExists festgelegt.
  • PRIMARY_KEY: erforderlich. Durch Kommas getrennte Primärschlüsselspalten, die beim Erstellen der Cloud Spanner-Ausgabetabelle erforderlich sind.
  • BATCHSIZE: optional. Anzahl der Datensätze, die in einem Roundtrip in die Cloud Spanner-Tabelle eingefügt werden sollen. Standardwert ist 1.000.
  • 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. Standardwert: 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 inaktive Daten mit einem 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","GCSTOSPANNER",
      "--templateProperty","project.id=PROJECT_ID",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","gcs.spanner.input.format=FORMAT",
      "--templateProperty","gcs.spanner.input.location=CLOUD_STORAGE_INPUT_PATH",
      "--templateProperty","gcs.spanner.output.instance=INSTANCE",
      "--templateProperty","gcs.spanner.output.database=DATABASE",
      "--templateProperty","gcs.spanner.output.table=TABLE",
      "--templateProperty","gcs.spanner.output.saveMode=MODE",
      "--templateProperty","gcs.spanner.output.primaryKey=PRIMARY_KEY",
      "--templateProperty","gcs.spanner.output.batchInsertSize=BATCHSIZE",
      "--templateProperty spanner.jdbc.dialect=SPANNER_JDBC_DIALECT"
    ],
    "jarFileUris":[
      "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"
  }
}