Vorlage „Cloud Storage für Cloud Spanner“

Verwenden Sie die Dataproc-Vorlage „Serverless Cloud Storage to Spanner“, um Daten aus Cloud Storage in Spanner 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, in der angegebenen REGION im Netzwerk default ausgewählt ist.

    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.
  • CLOUD_STORAGE_INPUT_PATH: erforderlich. Cloud Storage-Pfad, aus dem Eingabedaten gelesen werden.

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

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

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

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... weitere Gläser]
  • INSTANCE: erforderlich. Spanner-Instanz-ID.
  • DATABASE: erforderlich. Spanner-Datenbank-ID.
  • TABLE: erforderlich. Name der Spanner-Ausgabetabelle.
  • MODE: Optional. Schreibmodus für Spanner-Ausgabe. Optionen: Append, Overwrite, Ignore oder ErrorifExists. Die Standardeinstellung ist ErrorifExists.
  • PRIMARY_KEY: erforderlich. Kommagetrennte Primärschlüsselspalten, die beim Erstellen der Spanner-Ausgabetabelle erforderlich sind.
  • BATCHSIZE: Optional. Anzahl der Datensätze, die in einem Roundtrip in die Spanner-Tabelle eingefügt werden sollen. Die Standardeinstellung ist 1.000.
  • SERVICE_ACCOUNT: Optional. Falls nicht angegeben, Compute Engine-Standarddienstkonto verwendet wird.
  • 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 ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE oder WARN sein. 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 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"

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 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"

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 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"

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, in der angegebenen REGION im Netzwerk default ausgewählt ist.

    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.
  • CLOUD_STORAGE_INPUT_PATH: erforderlich. Cloud Storage-Pfad, aus dem Eingabedaten gelesen werden.

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

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

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

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... weitere Gläser]
  • INSTANCE: erforderlich. Spanner-Instanz-ID.
  • DATABASE: erforderlich. Spanner-Datenbank-ID.
  • TABLE: erforderlich. Name der Spanner-Ausgabetabelle.
  • MODE: Optional. Schreibmodus für Spanner-Ausgabe. Optionen: Append, Overwrite, Ignore oder ErrorifExists. Die Standardeinstellung ist ErrorifExists.
  • PRIMARY_KEY: erforderlich. Kommagetrennte Primärschlüsselspalten, die beim Erstellen der Spanner-Ausgabetabelle erforderlich sind.
  • BATCHSIZE: Optional. Anzahl der Datensätze, die in einem Roundtrip in die Spanner-Tabelle eingefügt werden sollen. Die Standardeinstellung 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-Property=value-Paaren.
  • LABEL und LABEL_VALUE: Optional. Durch Kommas getrennte Liste von label=value-Paaren.
  • LOG_LEVEL: Optional. Protokollebene. Kann ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE oder WARN sein. 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","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"
    ],
    "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"
  }
}