Modèle Cloud Storage vers JDBC

Utilisez le modèle Serverless pour Apache Spark Cloud Storage vers JDBC pour extraire des données de Cloud Storage vers des bases de données JDBC.

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

  • JDBC_CONNECTOR_CLOUD_STORAGE_PATH : valeur obligatoire. Chemin d'accès Cloud Storage complet, y compris le nom de fichier, où est stocké le fichier JAR du connecteur JDBC. Vous pouvez utiliser les commandes suivantes pour télécharger les connecteurs JDBC à importer dans Cloud Storage :
    • MySQL :
      wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
            
    • PostgreSQL SQL :
      wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
            
    • Microsoft SQL Server :
        
      wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
            
    • Oracle :
      wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
            
  • CLOUD_STORAGE_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où sont stockés les fichiers d'entrée.

    Exemple gs://dataproc-templates/cloud_storage_to_jdbc_input

  • FORMAT : valeur obligatoire. Format des données de sortie. Options : avro, parquet, csv ou orc. Valeur par défaut : avro. 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, [, ... autres fichiers JAR]
  • MODE : facultatif. Mode d'écriture pour la sortie Cloud Storage. Options : Append, Overwrite, Ignore ou ErrorIfExists. Valeur par défaut : ErrorIfExists.
  • Les variables suivantes sont utilisées pour construire le JDBC_CONNECTION_URL requis :
    • JDBC_HOST
    • JDBC_PORT
    • JDBC_DATABASE ou JDBC_SERVICE pour Oracle
    • JDBC_USERNAME
    • JDBC_PASSWORD

    Créez le JDBC_CONNECTION_URL à l'aide de l'un des formats spécifiques au connecteur suivants :

    • MySQL :
      jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • PostgreSQL SQL :
      jdbc:postgresql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • Microsoft SQL Server :
      jdbc:sqlserver://JDBC_HOST:JDBC_PORT;databaseName=JDBC_DATABASE;user=JDBC_USERNAME;password=JDBC_PASSWORD
              
    • Oracle :
      jdbc:oracle:thin:@//JDBC_HOST:JDBC_PORT/JDBC_SERVICE?user=JDBC_USERNAME&password=
              
  • JDBC_TABLE : valeur obligatoire. Nom de la table dans laquelle la sortie sera écrite.
  • DRIVER : valeur obligatoire. Pilote JDBC utilisé pour la connexion :
    • MySQL :
      com.mysql.cj.jdbc.Driver
              
    • PostgreSQL SQL :
      org.postgresql.Driver
              
    • Microsoft SQL Server :
        
      com.microsoft.sqlserver.jdbc.SQLServerDriver
              
    • Oracle :
      oracle.jdbc.driver.OracleDriver
              
  • 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).
  • LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE ou WARN. Par défaut : INFO.
  • NUM_PARTITIONS : facultatif. Nombre maximal de partitions pouvant être utilisées pour le parallélisme des écritures de tables. Si elle est spécifiée, cette valeur est utilisée pour la connexion de sortie JDBC. La valeur par défaut correspond aux partitions initiales définies par Spark read().
  • BATCH_SIZE : facultatif. Nombre d'enregistrements à insérer par aller-retour. Valeur par défaut : 1000.
  • 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.
  • 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 \
    --project="PROJECT_ID" \
    --region="REGION" \
    --version="1.2" \
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" \
    --subnet="SUBNET" \
    --kms-key="KMS_KEY" \
    --service-account="SERVICE_ACCOUNT" \
    --properties="PROPERTY=PROPERTY_VALUE" \
    --labels="LABEL=LABEL_VALUE" \
    -- --template=GCSTOJDBC \
    --templateProperty project.id="PROJECT_ID" \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" \
    --templateProperty gcs.jdbc.input.format="FORMAT" \
    --templateProperty gcs.jdbc.output.saveMode="MODE" \
    --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" \
    --templateProperty gcs.jdbc.output.table="JDBC_TABLE" \
    --templateProperty gcs.jdbc.output.driver="DRIVER" \
    --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" \
    --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"

Windows (PowerShell)

gcloud dataproc batches submit spark `
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate `
    --project="PROJECT_ID" `
    --region="REGION" `
    --version="1.2" `
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" `
    --subnet="SUBNET" `
    --kms-key="KMS_KEY" `
    --service-account="SERVICE_ACCOUNT" `
    --properties="PROPERTY=PROPERTY_VALUE" `
    --labels="LABEL=LABEL_VALUE" `
    -- --template=GCSTOJDBC `
    --templateProperty project.id="PROJECT_ID" `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" `
    --templateProperty gcs.jdbc.input.format="FORMAT" `
    --templateProperty gcs.jdbc.output.saveMode="MODE" `
    --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" `
    --templateProperty gcs.jdbc.output.table="JDBC_TABLE" `
    --templateProperty gcs.jdbc.output.driver="DRIVER" `
    --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" `
    --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"

Windows (cmd.exe)

gcloud dataproc batches submit spark ^
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^
    --project="PROJECT_ID" ^
    --region="REGION" ^
    --version="1.2" ^
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,JDBC_CONNECTOR_CLOUD_STORAGE_PATH" ^
    --subnet="SUBNET" ^
    --kms-key="KMS_KEY" ^
    --service-account="SERVICE_ACCOUNT" ^
    --properties="PROPERTY=PROPERTY_VALUE" ^
    --labels="LABEL=LABEL_VALUE" ^
    -- --template=GCSTOJDBC ^
    --templateProperty project.id="PROJECT_ID" ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty gcs.jdbc.input.location="CLOUD_STORAGE_PATH" ^
    --templateProperty gcs.jdbc.input.format="FORMAT" ^
    --templateProperty gcs.jdbc.output.saveMode="MODE" ^
    --templateProperty gcs.jdbc.output.url="JDBC_CONNECTION_URL" ^
    --templateProperty gcs.jdbc.output.table="JDBC_TABLE" ^
    --templateProperty gcs.jdbc.output.driver="DRIVER" ^
    --templateProperty gcs.jdbc.spark.partitions="NUM_PARTITIONS" ^
    --templateProperty gcs.jdbc.output.batchInsertSize="BATCH_SIZE"

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

  • JDBC_CONNECTOR_CLOUD_STORAGE_PATH : valeur obligatoire. Chemin d'accès Cloud Storage complet, y compris le nom de fichier, où est stocké le fichier JAR du connecteur JDBC. Vous pouvez utiliser les commandes suivantes pour télécharger les connecteurs JDBC à importer dans Cloud Storage :
    • MySQL :
      wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
            
    • PostgreSQL SQL :
      wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
            
    • Microsoft SQL Server :
        
      wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/6.4.0.jre8/mssql-jdbc-6.4.0.jre8.jar
            
    • Oracle :
      wget https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/21.7.0.0/ojdbc8-21.7.0.0.jar
            
  • CLOUD_STORAGE_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où sont stockés les fichiers d'entrée.

    Exemple gs://dataproc-templates/cloud_storage_to_jdbc_input

  • FORMAT : valeur obligatoire. Format des données de sortie. Options : avro, parquet, csv ou orc. Valeur par défaut : avro. 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, [, ... autres fichiers JAR]
  • MODE : facultatif. Mode d'écriture pour la sortie Cloud Storage. Options : Append, Overwrite, Ignore ou ErrorIfExists. Valeur par défaut : ErrorIfExists.
  • Les variables suivantes sont utilisées pour construire le JDBC_CONNECTION_URL requis :
    • JDBC_HOST
    • JDBC_PORT
    • JDBC_DATABASE ou JDBC_SERVICE pour Oracle
    • JDBC_USERNAME
    • JDBC_PASSWORD

    Créez le JDBC_CONNECTION_URL à l'aide de l'un des formats spécifiques au connecteur suivants :

    • MySQL :
      jdbc:mysql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • PostgreSQL SQL :
      jdbc:postgresql://JDBC_HOST:JDBC_PORT/JDBC_DATABASE?user=JDBC_USERNAME&password=JDBC_PASSWORD
              
    • Microsoft SQL Server :
      jdbc:sqlserver://JDBC_HOST:JDBC_PORT;databaseName=JDBC_DATABASE;user=JDBC_USERNAME;password=JDBC_PASSWORD
              
    • Oracle :
      jdbc:oracle:thin:@//JDBC_HOST:JDBC_PORT/JDBC_SERVICE?user=JDBC_USERNAME&password=
              
  • JDBC_TABLE : valeur obligatoire. Nom de la table dans laquelle la sortie sera écrite.
  • DRIVER : valeur obligatoire. Pilote JDBC utilisé pour la connexion :
    • MySQL :
      com.mysql.cj.jdbc.Driver
              
    • PostgreSQL SQL :
      org.postgresql.Driver
              
    • Microsoft SQL Server :
        
      com.microsoft.sqlserver.jdbc.SQLServerDriver
              
    • Oracle :
      oracle.jdbc.driver.OracleDriver
              
  • 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).
  • LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE ou WARN. Par défaut : INFO.
  • NUM_PARTITIONS : facultatif. Nombre maximal de partitions pouvant être utilisées pour le parallélisme des écritures de tables. Si elle est spécifiée, cette valeur est utilisée pour la connexion de sortie JDBC. La valeur par défaut correspond aux partitions initiales définies par Spark read().
  • BATCH_SIZE : facultatif. Nombre d'enregistrements à insérer par aller-retour. Valeur par défaut : 1000.
  • 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.
  • 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=GCSTOJDBC",
      "--templateProperty","project.id=PROJECT_ID",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","gcs.jdbc.input.location=CLOUD_STORAGE_PATH",
      "--templateProperty","gcs.jdbc.input.format=FORMAT",
      "--templateProperty","gcs.jdbc.output.saveMode=MODE",
      "--templateProperty","gcs.jdbc.output.url=JDBC_CONNECTION_URL",
      "--templateProperty","gcs.jdbc.output.table=JDBC_TABLE",
      "--templateProperty","gcs.jdbc.output.driver=DRIVER",
      "--templateProperty","gcs.jdbc.spark.partitions=NUM_PARTITIONS",
      "--templateProperty","gcs.jdbc.output.batchInsertSize=BATCH_SIZE"
    ],
    "jarFileUris": [
      "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar", "JDBC_CONNECTOR_CLOUD_STORAGE_PATH"
    ]
  }
}

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