Modèle Cloud Storage vers Cloud Storage

Utilisez le modèle Managed Service pour Apache Spark Cloud Storage vers Cloud Storage pour extraire des données de Cloud Storage vers Cloud Storage.

Utiliser le modèle

Exécutez le modèle à l'aide de gcloud CLI ou de l'API Managed Service pour Apache Spark.

gcloud

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

  • PROJECT_ID : valeur obligatoire. ID de votre Google Cloud projet 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 REGION 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 (accédez à gs://dataproc-templates-binaries ou exécutez gcloud storage ls gs://dataproc-templates-binaries pour afficher la liste des 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 vous utilisez avro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'indicateur jars de la gcloud CLI ou au champ de l'API.

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

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... autres fichiers JAR]
  • CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.

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

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

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

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... autres fichiers JAR]
  • MODE : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage. Options : Append, Overwrite, Ignore ou ErrorIfExists.
  • TEMP_TABLE et TEMP_QUERY : facultatif. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans Cloud Storage. TEMP_TABLE est le nom de la vue temporaire, et TEMP_QUERY est l'instruction de requête. TEMP_TABLE et le nom de la table dans TEMP_QUERY doivent correspondre.
  • SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.
  • PROPERTY et PROPERTY_VALUE: facultatif. Liste de paires Spark property=value séparées par une virgule.
  • LABEL et LABEL_VALUE : facultatif. Liste de paires label=value séparées par une virgule.
  • LOG_LEVEL : facultatif. Niveau de journalisation. Peut être l'une des valeurs suivantes : 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 au repos sont chiffrées à 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="2.3" \
    --project="PROJECT_ID" \
    --region="REGION" \
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,file:///usr/lib/spark/connector/spark-avro.jar" \
    --subnet="SUBNET" \
    --kms-key="KMS_KEY" \
    --service-account="SERVICE_ACCOUNT" \
    --properties="PROPERTY=PROPERTY_VALUE" \
    --labels="LABEL=LABEL_VALUE" \
    -- --template=GCSTOGCS \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty project.id="PROJECT_ID" \
    --templateProperty gcs.gcs.input.location="CLOUD_STORAGE_INPUT_PATH" \
    --templateProperty gcs.gcs.input.format="INPUT_FILE_FORMAT" \
    --templateProperty gcs.gcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" \
    --templateProperty gcs.gcs.output.format="OUTPUT_FILE_FORMAT" \
    --templateProperty gcs.gcs.write.mode="MODE" \
    --templateProperty gcs.gcs.temp.table="TEMP_TABLE" \
    --templateProperty gcs.gcs.temp.query="TEMP_QUERY"

Windows (PowerShell)

gcloud dataproc batches submit spark `
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate `
    --version="2.3" `
    --project="PROJECT_ID" `
    --region="REGION" `
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,file:///usr/lib/spark/connector/spark-avro.jar" `
    --subnet="SUBNET" `
    --kms-key="KMS_KEY" `
    --service-account="SERVICE_ACCOUNT" `
    --properties="PROPERTY=PROPERTY_VALUE" `
    --labels="LABEL=LABEL_VALUE" `
    -- --template=GCSTOGCS `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty project.id="PROJECT_ID" `
    --templateProperty gcs.gcs.input.location="CLOUD_STORAGE_INPUT_PATH" `
    --templateProperty gcs.gcs.input.format="INPUT_FILE_FORMAT" `
    --templateProperty gcs.gcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" `
    --templateProperty gcs.gcs.output.format="OUTPUT_FILE_FORMAT" `
    --templateProperty gcs.gcs.write.mode="MODE" `
    --templateProperty gcs.gcs.temp.table="TEMP_TABLE" `
    --templateProperty gcs.gcs.temp.query="TEMP_QUERY"

Windows (cmd.exe)

gcloud dataproc batches submit spark ^
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^
    --version="2.3" ^
    --project="PROJECT_ID" ^
    --region="REGION" ^
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,file:///usr/lib/spark/connector/spark-avro.jar" ^
    --subnet="SUBNET" ^
    --kms-key="KMS_KEY" ^
    --service-account="SERVICE_ACCOUNT" ^
    --properties="PROPERTY=PROPERTY_VALUE" ^
    --labels="LABEL=LABEL_VALUE" ^
    -- --template=GCSTOGCS ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty project.id="PROJECT_ID" ^
    --templateProperty gcs.gcs.input.location="CLOUD_STORAGE_INPUT_PATH" ^
    --templateProperty gcs.gcs.input.format="INPUT_FILE_FORMAT" ^
    --templateProperty gcs.gcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" ^
    --templateProperty gcs.gcs.output.format="OUTPUT_FILE_FORMAT" ^
    --templateProperty gcs.gcs.write.mode="MODE" ^
    --templateProperty gcs.gcs.temp.table="TEMP_TABLE" ^
    --templateProperty gcs.gcs.temp.query="TEMP_QUERY"

REST

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

  • PROJECT_ID : valeur obligatoire. ID de votre Google Cloud projet 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 REGION 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 (accédez à gs://dataproc-templates-binaries ou exécutez gcloud storage ls gs://dataproc-templates-binaries pour afficher la liste des 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 vous utilisez avro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'indicateur jars de la gcloud CLI ou au champ de l'API.

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

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... autres fichiers JAR]
  • CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.

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

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

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

    --jars=file:///usr/lib/spark/connector/spark-avro.jar, [ ... autres fichiers JAR]
  • MODE : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage. Options : Append, Overwrite, Ignore ou ErrorIfExists.
  • TEMP_TABLE et TEMP_QUERY : facultatif. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans Cloud Storage. TEMP_TABLE est le nom de la vue temporaire, et TEMP_QUERY est l'instruction de requête. TEMP_TABLE et le nom de la table dans TEMP_QUERY doivent correspondre.
  • SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.
  • PROPERTY et PROPERTY_VALUE: facultatif. Liste de paires Spark property=value séparées par une virgule.
  • LABEL et LABEL_VALUE : facultatif. Liste de paires label=value séparées par une virgule.
  • LOG_LEVEL : facultatif. Niveau de journalisation. Peut être l'une des valeurs suivantes : 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 au repos sont chiffrées à 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": "2.3",
    "properties": {
      "PROPERTY": "PROPERTY_VALUE"
    }
  },
  "sparkBatch": {
    "mainClass": "com.google.cloud.dataproc.templates.main.DataProcTemplate",
    "args": [
      "--template","GCSTOGCS",
      "--templateProperty","project.id=PROJECT_ID",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","gcs.gcs.input.location=CLOUD_STORAGE_INPUT_PATH",
      "--templateProperty","gcs.gcs.input.format=INPUT_FILE_FORMAT",
      "--templateProperty","gcs.gcs.output.location=CLOUD_STORAGE_OUTPUT_PATH",
      "--templateProperty","gcs.gcs.output.format=OUTPUT_FILE_FORMAT",
      "--templateProperty","gcs.gcs.write.mode=MODE",
      "--templateProperty","gcs.gcs.temp.table=TEMP_TABLE",
      "--templateProperty","gcs.gcs.temp.query=TEMP_QUERY"
    ],
    "jarFileUris":[
      "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar",
      "file:///usr/lib/spark/connector/spark-avro.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"
  }
}