Modèle JDBC vers Cloud Storage
Utilisez le modèle Dataproc sans serveur JDBC vers Cloud Storage pour extraire des données des bases de données JDBC vers Cloud Storage.
Ce modèle prend en charge les bases de données suivantes en entrée:
- MySQL
- PostgreSQL
- Microsoft SQL Server
- Oracle
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
- 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 :
- Les variables suivantes sont utilisées pour créer l'JDBC_CONNECTION_URL requise :
- 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=
- 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:
- FORMAT : valeur obligatoire. Format des données de sortie Options :
avro
,parquet
,csv
oujson
. Valeur par défaut :avro
. Remarque:Si la valeur estavro
, vous devez ajouter "file:///usr/lib/spark/external/spark-avro.jar
". à l'optionjars
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 fichiers JAR] - MODE : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage.
Options :
append
,overwrite
,ignore
ouerrorifexists
. - 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). - CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.
Exemple
gs://dataproc-templates/jdbc_to_cloud_storage_output
- LOG_LEVEL : facultatif. Niveau de journalisation Il peut s'agir de
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
ouWARN
. Valeur par défaut:INFO
. - INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND,
NUM_PARTITIONS: facultatif. Si vous utilisez cette commande, tous les paramètres suivants doivent être spécifiés :
- INPUT_PARTITION_COLUMN : nom de la colonne de partition de la table d'entrée JDBC.
- LOWERBOUND: limite inférieure de la colonne de partition de la table d'entrée JDBC utilisée pour déterminer la pas de partition.
- UPPERBOUND:limite supérieure de la colonne de partition de la table d'entrée JDBC utilisée pour déterminer le pas de partition.
- NUM_PARTITIONS : nombre maximal de partitions pouvant être utilisées pour le parallélisme des lectures et des écritures de table.
Si elle est spécifiée, cette valeur est utilisée pour la connexion d'entrée et de sortie JDBC. Valeur par défaut :
10
.
- OUTPUT_PARTITION_COLUMN : facultatif. Nom de la colonne de partition de sortie.
- FETCHSIZE : facultatif. Nombre de lignes à extraire par aller-retour. Par défaut : 10.
- QUERY ou QUERY_FILE : obligatoire.
Définissez
QUERY
ouQUERY_FILE
pour spécifier la requête à utiliser pour extraire des données de JDBC. - TEMP_VIEW et TEMP_QUERY : facultatifs. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans Cloud Storage. TEMPVIEW doit être identique au nom de la table 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 : facultatives. 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. - JDBC_SESSION_INIT : facultatif. Instruction d'initialisation de la session pour lire les modèles Java.
-
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=JDBCTOGCS \ --templateProperty project.id="PROJECT_ID" \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty jdbctogcs.jdbc.url="JDBC_CONNECTION_URL" \ --templateProperty jdbctogcs.jdbc.driver.class.name="DRIVER" \ --templateProperty jdbctogcs.output.format="FORMAT" \ --templateProperty jdbctogcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" \ --templateProperty jdbctogcs.sql="QUERY" \ --templateProperty jdbctogcs.sql.file="QUERY_FILE" \ --templateProperty jdbctogcs.sql.partitionColumn="INPUT_PARTITION_COLUMN" \ --templateProperty jdbctogcs.sql.lowerBound="LOWERBOUND" \ --templateProperty jdbctogcs.sql.upperBound="UPPERBOUND" \ --templateProperty jdbctogcs.jdbc.fetchsize="FETCHSIZE" \ --templateProperty jdbctogcs.sql.numPartitions="NUM_PARTITIONS" \ --templateProperty jdbctogcs.write.mode="MODE" \ --templateProperty dbctogcs.output.partition.col="OUTPUT_PARTITION_COLUMN" \ --templateProperty jdbctogcs.temp.table="TEMP_VIEW" \ --templateProperty jdbctogcs.temp.query="TEMP_QUERY"
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=JDBCTOGCS ` --templateProperty project.id="PROJECT_ID" ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty jdbctogcs.jdbc.url="JDBC_CONNECTION_URL" ` --templateProperty jdbctogcs.jdbc.driver.class.name="DRIVER" ` --templateProperty jdbctogcs.output.format="FORMAT" ` --templateProperty jdbctogcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" ` --templateProperty jdbctogcs.sql="QUERY" ` --templateProperty jdbctogcs.sql.file="QUERY_FILE" ` --templateProperty jdbctogcs.sql.partitionColumn="INPUT_PARTITION_COLUMN" ` --templateProperty jdbctogcs.sql.lowerBound="LOWERBOUND" ` --templateProperty jdbctogcs.sql.upperBound="UPPERBOUND" ` --templateProperty jdbctogcs.jdbc.fetchsize="FETCHSIZE" ` --templateProperty jdbctogcs.sql.numPartitions="NUM_PARTITIONS" ` --templateProperty jdbctogcs.write.mode="MODE" ` --templateProperty dbctogcs.output.partition.col="OUTPUT_PARTITION_COLUMN" ` --templateProperty jdbctogcs.temp.table="TEMP_VIEW" ` --templateProperty jdbctogcs.temp.query="TEMP_QUERY"
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=JDBCTOGCS ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty jdbctogcs.jdbc.url="JDBC_CONNECTION_URL" ^ --templateProperty jdbctogcs.jdbc.driver.class.name="DRIVER" ^ --templateProperty jdbctogcs.output.format="FORMAT" ^ --templateProperty jdbctogcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" ^ --templateProperty jdbctogcs.sql="QUERY" ^ --templateProperty jdbctogcs.sql.file="QUERY_FILE" ^ --templateProperty jdbctogcs.sql.partitionColumn="INPUT_PARTITION_COLUMN" ^ --templateProperty jdbctogcs.sql.lowerBound="LOWERBOUND" ^ --templateProperty jdbctogcs.sql.upperBound="UPPERBOUND" ^ --templateProperty jdbctogcs.jdbc.fetchsize="FETCHSIZE" ^ --templateProperty jdbctogcs.sql.numPartitions="NUM_PARTITIONS" ^ --templateProperty jdbctogcs.write.mode="MODE" ^ --templateProperty dbctogcs.output.partition.col="OUTPUT_PARTITION_COLUMN" ^ --templateProperty jdbctogcs.temp.table="TEMP_VIEW" ^ --templateProperty jdbctogcs.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
- 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 :
- Les variables suivantes sont utilisées pour créer l'JDBC_CONNECTION_URL requise :
- 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=
- 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:
- FORMAT : valeur obligatoire. Format des données de sortie Options :
avro
,parquet
,csv
oujson
. Valeur par défaut :avro
. Remarque:Si la valeur estavro
, vous devez ajouter "file:///usr/lib/spark/external/spark-avro.jar
". à l'optionjars
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 fichiers JAR] - MODE : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage.
Options :
append
,overwrite
,ignore
ouerrorifexists
. - 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). - CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.
Exemple
gs://dataproc-templates/jdbc_to_cloud_storage_output
- LOG_LEVEL : facultatif. Niveau de journalisation Il peut s'agir de
ALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
ouWARN
. Valeur par défaut:INFO
. - INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND,
NUM_PARTITIONS: facultatif. Si vous utilisez cette commande, tous les paramètres suivants doivent être spécifiés :
- INPUT_PARTITION_COLUMN : nom de la colonne de partition de la table d'entrée JDBC.
- LOWERBOUND: limite inférieure de la colonne de partition de la table d'entrée JDBC utilisée pour déterminer la pas de partition.
- UPPERBOUND:limite supérieure de la colonne de partition de la table d'entrée JDBC utilisée pour déterminer le pas de partition.
- NUM_PARTITIONS : nombre maximal de partitions pouvant être utilisées pour le parallélisme des lectures et des écritures de table.
Si elle est spécifiée, cette valeur est utilisée pour la connexion d'entrée et de sortie JDBC. Valeur par défaut :
10
.
- OUTPUT_PARTITION_COLUMN : facultatif. Nom de la colonne de partition de sortie.
- FETCHSIZE : facultatif. Nombre de lignes à extraire par aller-retour. Par défaut : 10.
- QUERY ou QUERY_FILE : obligatoire.
Définissez
QUERY
ouQUERY_FILE
pour spécifier la requête à utiliser pour extraire des données de JDBC. - TEMP_VIEW et TEMP_QUERY : facultatifs. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans Cloud Storage. TEMPVIEW doit être identique au nom de la table 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 : facultatives. Liste de paires
label
=value
séparées par une virgule. - JDBC_SESSION_INIT : facultatif. Instruction d'initialisation de la session pour lire les modèles Java.
-
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é appartenant à Google 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=JDBCTOGCS", "--templateProperty","log.level=LOG_LEVEL", "--templateProperty","project.id=PROJECT_ID", "--templateProperty","jdbctogcs.jdbc.url=JDBC_CONNECTION_URL", "--templateProperty","jdbctogcs.jdbc.driver.class.name=DRIVER", "--templateProperty","jdbctogcs.output.location=CLOUD_STORAGE_OUTPUT_PATH", "--templateProperty","jdbctogcs.write.mode=MODE", "--templateProperty","jdbctogcs.output.format=FORMAT", "--templateProperty","jdbctogcs.sql.numPartitions=NUM_PARTITIONS", "--templateProperty","jdbctogcs.jdbc.fetchsize=FETCHSIZE", "--templateProperty","jdbctogcs.sql=QUERY", "--templateProperty","jdbctogcs.sql.file=QUERY_FILE", "--templateProperty","jdbctogcs.sql.partitionColumn=INPUT_PARTITION_COLUMN", "--templateProperty","jdbctogcs.sql.lowerBound=LOWERBOUND", "--templateProperty","jdbctogcs.sql.upperBound=UPPERBOUND", "--templateProperty","jdbctogcs.output.partition.col=OUTPUT_PARTITION_COLUMN", "--templateProperty","jdbctogcs.temp.table=TEMP_VIEW", "--templateProperty","jdbctogcs.temp.query=TEMP_QUERY", "--templateProperty","jdbctogcs.jdbc.sessioninitstatement=JDBC_SESSION_INIT" ], "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" } }