Modèle Cloud Spanner vers Cloud Storage

Utilisez le modèle Dataproc de Cloud Spanner sans serveur vers Cloud Storage pour extraire des bases de données Spanner vers Cloud Storage.

Utiliser le modèle

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

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 indiqué dans les paramètres IAM.
  • REGION : valeur obligatoire. Compute Engine région.
  • SUBNET : facultatif. Si aucun sous-réseau n'est spécifié, le sous-réseau dans 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 valeur la plus récente version du modèle ou la date d'une version spécifique, par exemple 2023-03-17_v0.1.0-beta Consultez la page gs://dataproc-templates-binaries. ou exécutez gcloud storage ls gs://dataproc-templates-binaries pour obtenir la liste des versions de modèle disponibles).
  • INSTANCE : valeur obligatoire. ID de l'instance Spanner.
  • DATABASE : valeur obligatoire. ID de base de données Spanner.
  • TABLE : valeur obligatoire. Nom de la table d'entrée Spanner ou une requête SQL sur la table d'entrée Spanner.

    Exemple (la requête SQL doit être entre parenthèses): (select * from TABLE)

  • CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.

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

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

    Exemple (le préfixe file:// fait référence à un fichier JAR Dataproc sans serveur):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... autres pots]
  • MODE : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage Options: append, overwrite, ignore ou errorifexists.
  • NUM_PARTITIONS : facultatif. Le nombre maximal de qui peuvent être utilisées pour le parallélisme des lectures et des écritures de table.
  • INPUT_PARTITION_COLUMN, LOWERBOUND, UPPERBOUND: facultatif. S'ils sont utilisés, tous les éléments suivants les paramètres suivants doivent être spécifiés: <ph type="x-smartling-placeholder">
      </ph>
    • INPUT_PARTITION_COLUMN: nom de la colonne de partition de la table d'entrée Spanner.
    • LOWERBOUND: limite inférieure de la colonne de partition de la table d'entrée Spanner utilisée pour déterminer pas de partition.
    • UPPERBOUND:limite supérieure de la colonne de partition de la table d'entrée Spanner utilisée pour décider du pas de partition.
  • TEMP_VIEW et TEMP_QUERY : facultatifs. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement des données dans Cloud Storage. TEMP_VIEW doit être identique au nom de tableau utilisé dans la requête et TEMP_QUERY est l'instruction de requête.
  • SERVICE_ACCOUNT : facultatif. S'il n'est pas fourni, la valeur default Compute Engine service account (Compte de service Compute Engine par défaut) est utilisé.
  • PROPERTY et PROPERTY_VALUE: Facultatif. Liste de valeurs séparées par une virgule Propriété Spark=value.
  • LABEL et LABEL_VALUE: (Facultatif) Liste de paires label=value séparées par une virgule.
  • LOG_LEVEL : facultatif. Niveau de journalisation Peut appartenir à l'une des valeurs suivantes : ALL, DEBUG, ERROR, FATAL, INFO OFF, TRACE ou WARN. Valeur 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é détenue et gérée par Google.

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

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 indiqué dans les paramètres IAM.
  • REGION : valeur obligatoire. Compute Engine région.
  • SUBNET : facultatif. Si aucun sous-réseau n'est spécifié, le sous-réseau dans 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 valeur la plus récente version du modèle ou la date d'une version spécifique, par exemple 2023-03-17_v0.1.0-beta Consultez la page gs://dataproc-templates-binaries. ou exécutez gcloud storage ls gs://dataproc-templates-binaries pour obtenir la liste des versions de modèle disponibles).
  • INSTANCE : valeur obligatoire. ID de l'instance Spanner.
  • DATABASE : valeur obligatoire. ID de base de données Spanner.
  • TABLE : valeur obligatoire. Nom de la table d'entrée Spanner ou une requête SQL sur la table d'entrée Spanner.

    Exemple (la requête SQL doit être entre parenthèses): (select * from TABLE)

  • CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.

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

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

    Exemple (le préfixe file:// fait référence à un fichier JAR Dataproc sans serveur):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... autres pots]
  • MODE : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage Options: append, overwrite, ignore ou errorifexists.
  • NUM_PARTITIONS : facultatif. Le nombre maximal de qui peuvent être utilisées pour le parallélisme des lectures et des écritures de table.
  • INPUT_PARTITION_COLUMN, LOWERBOUND, UPPERBOUND: facultatif. S'ils sont utilisés, tous les éléments suivants les paramètres suivants doivent être spécifiés: <ph type="x-smartling-placeholder">
      </ph>
    • INPUT_PARTITION_COLUMN: nom de la colonne de partition de la table d'entrée Spanner.
    • LOWERBOUND: limite inférieure de la colonne de partition de la table d'entrée Spanner utilisée pour déterminer pas de partition.
    • UPPERBOUND:limite supérieure de la colonne de partition de la table d'entrée Spanner utilisée pour décider du pas de partition.
  • TEMP_VIEW et TEMP_QUERY : facultatifs. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement des données dans Cloud Storage. TEMP_VIEW doit être identique au nom de tableau utilisé dans la requête et TEMP_QUERY est l'instruction de requête.
  • SERVICE_ACCOUNT : facultatif. S'il n'est pas fourni, la valeur default Compute Engine service account (Compte de service Compute Engine par défaut) est utilisé.
  • PROPERTY et PROPERTY_VALUE: Facultatif. Liste de valeurs séparées par une virgule Propriété Spark=value.
  • LABEL et LABEL_VALUE: Facultatif. Liste de paires label=value séparées par une virgule.
  • LOG_LEVEL : facultatif. Niveau de journalisation Peut appartenir à l'une des valeurs suivantes : ALL, DEBUG, ERROR, FATAL, INFO OFF, TRACE ou WARN. Valeur 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é détenue et gérée par Google.

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

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