Modèle Cloud Storage vers JDBC
Utilisez le modèle Dataproc sans serveur 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 CLI gcloud 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 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ù le fichier JAR du connecteur JDBC est stocké. Vous pouvez utiliser les commandes suivantes pour télécharger des connecteurs JDBC à importer dans Cloud Storage :
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- Postgres 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
- MySQL:
- CLOUD_STORAGE_PATH : valeur obligatoire. Cloud Storage
chemin d'accès 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
ouorc
. Valeur par défaut :avro
. Remarque : Si la valeur estavro
, vous devez ajouter "file:///usr/lib/spark/external/spark-avro.jar
" au champ de l'indicateur ou de l'API de la CLI gcloudjars
.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 fichiers JAR] - MODE : facultatif. Mode d'écriture pour la sortie Cloud Storage.
Options :
Append
,Overwrite
,Ignore
ouErrorIfExists
. Valeur par défaut :ErrorIfExists
. - Les variables suivantes permettent de construire les éléments
JDBC_CONNECTION_URL:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE, ou, pour Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Créez 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
- Postgres 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 le résultat sera écrit.
- DRIVER : valeur obligatoire. Pilote JDBC utilisé pour la connexion :
- MySQL:
com.mysql.cj.jdbc.Driver
- Postgres SQL :
org.postgresql.Driver
- Microsoft SQL Server :
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle :
oracle.jdbc.driver.OracleDriver
- MySQL:
- TEMPLATE_VERSION : valeur obligatoire. Spécifiez
latest
pour la dernière version du modèle ou la date d'une version spécifique, par exemple2023-03-17_v0.1.0-beta
(accédez à gs://dataproc-templates-binaries ou exécutezgcloud storage ls gs://dataproc-templates-binaries
pour afficher les versions de modèle disponibles). - LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
ouWARN
. Valeur par défaut:INFO
. - NUM_PARTITIONS : facultatif. Le nombre maximal de
pour le parallélisme des écritures de table.
Si elle est spécifiée, cette valeur est utilisée pour la connexion de sortie JDBC. Par défaut, les partitions initiales définies par Spark
read()
sont utilisées. - 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:
Facultatif. Liste de paires propriété Spark=
value
séparées par une virgule. - LABEL et LABEL_VALUE:
Facultatif. 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é 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 \ --project="PROJECT_ID" \ --region="REGION" \ --version="1.1" \ --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.1" ` --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.1" ^ --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 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
dans 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ù le fichier JAR du connecteur JDBC est stocké. Vous pouvez utiliser les commandes suivantes pour télécharger des connecteurs JDBC à importer dans Cloud Storage :
- MySQL:
wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
- Postgres 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
- MySQL:
- CLOUD_STORAGE_PATH : valeur obligatoire. Cloud Storage
chemin d'accès 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
ouorc
. Valeur par défaut :avro
. Remarque : Si la valeur estavro
, vous devez ajouter "file:///usr/lib/spark/external/spark-avro.jar
" au champ de l'indicateur ou de l'API de la CLI gcloudjars
.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 fichiers JAR] - MODE : facultatif. Mode d'écriture pour la sortie Cloud Storage.
Options :
Append
,Overwrite
,Ignore
ouErrorIfExists
. Valeur par défaut :ErrorIfExists
. - Les variables suivantes permettent de construire les éléments
JDBC_CONNECTION_URL:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE, ou, pour Oracle, JDBC_SERVICE
- JDBC_USERNAME
- JDBC_PASSWORD
Créez 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
- Postgres 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 le résultat sera écrit.
- DRIVER : valeur obligatoire. Pilote JDBC utilisé pour la connexion :
- MySQL:
com.mysql.cj.jdbc.Driver
- Postgres SQL :
org.postgresql.Driver
- Microsoft SQL Server :
com.microsoft.sqlserver.jdbc.SQLServerDriver
- Oracle :
oracle.jdbc.driver.OracleDriver
- MySQL:
- TEMPLATE_VERSION : valeur obligatoire. Spécifiez
latest
pour la dernière version du modèle ou la date d'une version spécifique, par exemple2023-03-17_v0.1.0-beta
(accédez à gs://dataproc-templates-binaries ou exécutezgcloud storage ls gs://dataproc-templates-binaries
pour afficher les versions de modèle disponibles). - LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
ouWARN
. Valeur par défaut:INFO
. - NUM_PARTITIONS : facultatif. Le nombre maximal de
pour le parallélisme des écritures de table.
Si elle est spécifiée, cette valeur est utilisée pour la connexion de sortie JDBC. Par défaut, les partitions initiales définies par Spark
read()
sont utilisées. - BATCH_SIZE : facultatif. Nombre d'enregistrements à insérer par aller-retour. Valeur par défaut :
1000
. - 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 : facultatives. Liste de valeurs séparées par une virgule
Propriété Spark=
value
. - LABEL et LABEL_VALUE : facultatives. 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é 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=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" } }