Modèle Cloud Storage vers Cloud Spanner

Utilisez le modèle "Serverless for Apache Spark Cloud Storage vers Spanner" pour extraire des données de Cloud Storage vers Spanner.

Utiliser le modèle

Exécutez le modèle à l'aide de la gcloud CLI ou de l'API Dataproc.

gcloud

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : valeur obligatoire. L'ID de votre projet Google Cloud est indiqué dans les paramètres IAM.
  • REGION : valeur obligatoire. Région Compute Engine.
  • SUBNET : facultatif. Si aucun sous-réseau n'est spécifié, le sous-réseau de la RÉGION spécifiée dans le réseau default est sélectionné.

    Exemple projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • TEMPLATE_VERSION : valeur obligatoire. Spécifiez latest pour la dernière version du modèle ou la date d'une version spécifique, par exemple 2023-03-17_v0.1.0-beta (consultez gs://dataproc-templates-binaries ou exécutez gcloud storage ls gs://dataproc-templates-binaries pour lister les versions de modèle disponibles).
  • CLOUD_STORAGE_INPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage à partir duquel les données d'entrée seront lues.

    Exemple gs://example-bucket/example-folder/

  • FORMAT : valeur obligatoire. Format des données d'entrée. Options : avro, parquet ou orc. Remarque : Si la valeur est avro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'option jars de gcloud CLI ou au champ de l'API.

    Exemple (le préfixe file:// fait référence à un fichier JAR Serverless pour Apache Spark) :

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... other jars]
  • INSTANCE : valeur obligatoire. ID de l'instance Spanner.
  • DATABASE : valeur obligatoire. ID de la base de données Spanner.
  • TABLE : valeur obligatoire. Nom de la table de sortie Spanner.
  • SPANNER_JDBC_DIALECT : valeur obligatoire. Dialecte JDBC Spanner. Options : googlesql ou postgresql. La valeur par défaut est googlesql.
  • MODE : facultatif. Mode d'écriture pour la sortie Spanner. Options : Append, Overwrite, Ignore ou ErrorifExists. La valeur par défaut est ErrorifExists.
  • PRIMARY_KEY : valeur obligatoire. Colonnes de clé primaire séparées par une virgule requises lors de la création d'une table de sortie Spanner.
  • BATCHSIZE : facultatif. Nombre d'enregistrements à insérer en un aller-retour dans la table Spanner. La valeur par défaut est 1 000.
  • SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.
  • PROPERTY et PROPERTY_VALUE : facultatifs. Liste de paires propriété Spark=value séparées par une virgule.
  • LABEL et LABEL_VALUE : facultatifs. Liste de paires label=value séparées par une virgule.
  • LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE ou WARN. Par défaut : INFO.
  • KMS_KEY : facultatif. Clé Cloud Key Management Service à utiliser pour le chiffrement. Si aucune clé n'est spécifiée, les données sont chiffrées au repos à l'aide d'une clé Google-owned and Google-managed encryption key.

    Exemple projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Exécutez la commande suivante :

Linux, macOS ou 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

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : valeur obligatoire. L'ID de votre projet Google Cloud est indiqué dans les paramètres IAM.
  • REGION : valeur obligatoire. Région Compute Engine.
  • SUBNET : facultatif. Si aucun sous-réseau n'est spécifié, le sous-réseau de la RÉGION spécifiée dans le réseau default est sélectionné.

    Exemple projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • TEMPLATE_VERSION : valeur obligatoire. Spécifiez latest pour la dernière version du modèle ou la date d'une version spécifique, par exemple 2023-03-17_v0.1.0-beta (consultez gs://dataproc-templates-binaries ou exécutez gcloud storage ls gs://dataproc-templates-binaries pour lister les versions de modèle disponibles).
  • CLOUD_STORAGE_INPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage à partir duquel les données d'entrée seront lues.

    Exemple gs://example-bucket/example-folder/

  • FORMAT : valeur obligatoire. Format des données d'entrée. Options : avro, parquet ou orc. Remarque : Si la valeur est avro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'option jars de gcloud CLI ou au champ de l'API.

    Exemple (le préfixe file:// fait référence à un fichier JAR Serverless pour Apache Spark) :

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... other jars]
  • INSTANCE : valeur obligatoire. ID de l'instance Spanner.
  • DATABASE : valeur obligatoire. ID de la base de données Spanner.
  • TABLE : valeur obligatoire. Nom de la table de sortie Spanner.
  • SPANNER_JDBC_DIALECT : valeur obligatoire. Dialecte JDBC Spanner. Options : googlesql ou postgresql. La valeur par défaut est googlesql.
  • MODE : facultatif. Mode d'écriture pour la sortie Spanner. Options : Append, Overwrite, Ignore ou ErrorifExists. La valeur par défaut est ErrorifExists.
  • PRIMARY_KEY : valeur obligatoire. Colonnes de clé primaire séparées par une virgule requises lors de la création d'une table de sortie Spanner.
  • BATCHSIZE : facultatif. Nombre d'enregistrements à insérer en un aller-retour dans la table Spanner. La valeur par défaut est 1 000.
  • SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.
  • PROPERTY et PROPERTY_VALUE : facultatifs. Liste de paires propriété Spark=value séparées par une virgule.
  • LABEL et LABEL_VALUE : facultatifs. Liste de paires label=value séparées par une virgule.
  • LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE ou WARN. Par défaut : INFO.
  • KMS_KEY : facultatif. Clé Cloud Key Management Service à utiliser pour le chiffrement. Si aucune clé n'est spécifiée, les données sont chiffrées au repos à l'aide d'une clé Google-owned and Google-managed encryption key.

    Exemple projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Méthode HTTP et URL :

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches

Corps JSON de la requête :


{
  "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"
    ]
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :


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