Modèle JDBC vers BigQuery
Utilisez le modèle Dataproc sans serveur JDBC vers BigQuery pour extraire des données de bases de données JDBC vers BigQuery.
Ce modèle accepte les bases de données suivantes en entrée:
- MySQL
- PostgreSQL
- Microsoft SQL Server
- Oracle
Utiliser le modèle
Exécutez le modèle à l'aide de la CLI gcloud ou de l'API Dataproc.
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
PROJECT_ID : valeur obligatoire. Votre ID de projet Google Cloud indiqué dans les paramètres IAM.REGION : valeur obligatoire. Région Compute EngineTEMPLATE_VERSION : valeur obligatoire. Spécifiezlatest
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).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éseaudefault
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:
DATASET etTABLE : obligatoire. Ensemble de données et table BigQuery de destination.- 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=JDBC_PASSWORD
DRIVER : valeur obligatoire. Pilote JDBC qui sera 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:
QUERY : valeur obligatoire. Requête SQL pour extraire des données de JDBC.MODE : valeur obligatoire. Mode d'écriture pour la sortie BigQuery. Options:append
,overwrite
,ignore
ouerrorifexists
.TEMP_BUCKET : valeur obligatoire. Nom du bucket Cloud Storage. Ce bucket est utilisé pour le chargement BigQuery.Exemple
gs://dataproc-templates/jdbc_to_cloud_storage_output
INPUT_PARTITION_COLUMN ,LOWERBOUND ,UPPERBOUND ,PARTITIONS : facultatif. Si vous utilisez cette option, 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 longueur de la 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.
- 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
.
FETCHSIZE : facultatif. Nombre de lignes à extraire par aller-retour. Par défaut : 10.TEMPVIEW etSQL_QUERY : facultatifs. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans BigQuery. TEMPVIEW est le nom de la vue temporaire, et SQL_QUERY est l'instruction de requête. TEMPVIEW et le nom de la table dans SQL_QUERY doivent correspondre.SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.PROPERTY etPROPERTY_VALUE : facultatives. Liste de paires propriété Spark=value
séparées par une virgule.LABEL etLABEL_VALUE : facultatives. Liste de paireslabel
=value
séparées par une virgule.LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir deALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
ouWARN
. 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'un 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="1.2" \ --project="PROJECT_ID " \ --region="REGION " \ --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=JDBCTOBIGQUERY \ --templateProperty log.level="LOG_LEVEL " \ --templateProperty jdbctobq.bigquery.location="DATASET .TABLE " \ --templateProperty jdbctobq.jdbc.url="JDBC_CONNECTION_URL " \ --templateProperty jdbctobq.jdbc.driver.class.name="DRIVER " \ --templateProperty jdbctobq.write.mode="MODE " \ --templateProperty jdbctobq.temp.gcs.bucket="TEMP_BUCKET " \ --templateProperty jdbctobq.sql="QUERY " \ --templateProperty jdbctobq.sql.numPartitions="PARTITIONS " \ --templateProperty jdbctobq.sql.partitionColumn="INPUT_PARTITION_COLUMN " \ --templateProperty jdbctobq.sql.lowerBound="LOWERBOUND " \ --templateProperty jdbctobq.sql.upperBound="UPPERBOUND " \ --templateProperty jdbctobq.jdbc.fetchsize="FETCHSIZE " \ --templateProperty jdbctobq.temp.table="TEMPVIEW " \ --templateProperty jdbctobq.temp.query="SQL_QUERY "
Windows (PowerShell)
gcloud dataproc batches submit spark ` --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ` --version="1.2" ` --project="PROJECT_ID " ` --region="REGION " ` --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=JDBCTOBIGQUERY ` --templateProperty log.level="LOG_LEVEL " ` --templateProperty jdbctobq.bigquery.location="DATASET .TABLE " ` --templateProperty jdbctobq.jdbc.url="JDBC_CONNECTION_URL " ` --templateProperty jdbctobq.jdbc.driver.class.name="DRIVER " ` --templateProperty jdbctobq.write.mode="MODE " ` --templateProperty jdbctobq.temp.gcs.bucket="TEMP_BUCKET " ` --templateProperty jdbctobq.sql="QUERY " ` --templateProperty jdbctobq.sql.numPartitions="PARTITIONS " ` --templateProperty jdbctobq.sql.partitionColumn="INPUT_PARTITION_COLUMN " ` --templateProperty jdbctobq.sql.lowerBound="LOWERBOUND " ` --templateProperty jdbctobq.sql.upperBound="UPPERBOUND " ` --templateProperty jdbctobq.jdbc.fetchsize="FETCHSIZE " ` --templateProperty jdbctobq.temp.table="TEMPVIEW " ` --templateProperty jdbctobq.temp.query="SQL_QUERY "
Windows (cmd.exe)
gcloud dataproc batches submit spark ^ --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^ --version="1.2" ^ --project="PROJECT_ID " ^ --region="REGION " ^ --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=JDBCTOBIGQUERY ^ --templateProperty log.level="LOG_LEVEL " ^ --templateProperty jdbctobq.bigquery.location="DATASET .TABLE " ^ --templateProperty jdbctobq.jdbc.url="JDBC_CONNECTION_URL " ^ --templateProperty jdbctobq.jdbc.driver.class.name="DRIVER " ^ --templateProperty jdbctobq.write.mode="MODE " ^ --templateProperty jdbctobq.temp.gcs.bucket="TEMP_BUCKET " ^ --templateProperty jdbctobq.sql="QUERY " ^ --templateProperty jdbctobq.sql.numPartitions="PARTITIONS " ^ --templateProperty jdbctobq.sql.partitionColumn="INPUT_PARTITION_COLUMN " ^ --templateProperty jdbctobq.sql.lowerBound="LOWERBOUND " ^ --templateProperty jdbctobq.sql.upperBound="UPPERBOUND " ^ --templateProperty jdbctobq.jdbc.fetchsize="FETCHSIZE " ^ --templateProperty jdbctobq.temp.table="TEMPVIEW " ^ --templateProperty jdbctobq.temp.query="SQL_QUERY "
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID : valeur obligatoire. Votre ID de projet Google Cloud indiqué dans les paramètres IAM.REGION : valeur obligatoire. Région Compute EngineTEMPLATE_VERSION : valeur obligatoire. Spécifiezlatest
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).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éseaudefault
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:
DATASET etTABLE : obligatoire. Ensemble de données et table BigQuery de destination.- 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=JDBC_PASSWORD
DRIVER : valeur obligatoire. Pilote JDBC qui sera 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:
QUERY : valeur obligatoire. Requête SQL pour extraire des données de JDBC.MODE : valeur obligatoire. Mode d'écriture pour la sortie BigQuery. Options:append
,overwrite
,ignore
ouerrorifexists
.TEMP_BUCKET : valeur obligatoire. Nom du bucket Cloud Storage. Ce bucket est utilisé pour le chargement BigQuery.Exemple
gs://dataproc-templates/jdbc_to_cloud_storage_output
INPUT_PARTITION_COLUMN ,LOWERBOUND ,UPPERBOUND ,PARTITIONS : facultatif. Si vous utilisez cette option, 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 longueur de la 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.
- 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
.
FETCHSIZE : facultatif. Nombre de lignes à extraire par aller-retour. Par défaut : 10.TEMPVIEW etSQL_QUERY : facultatifs. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans BigQuery. TEMPVIEW est le nom de la vue temporaire, et SQL_QUERY est l'instruction de requête. TEMPVIEW et le nom de la table dans SQL_QUERY doivent correspondre.SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.PROPERTY etPROPERTY_VALUE : facultatives. Liste de paires propriété Spark=value
séparées par une virgule.LABEL etLABEL_VALUE : facultatives. Liste de paireslabel
=value
séparées par une virgule.LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir deALL
,DEBUG
,ERROR
,FATAL
,INFO
,OFF
,TRACE
ouWARN
. 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'un 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","JDBCTOBIGQUERY", "--templateProperty","log.level=LOG_LEVEL ", "--templateProperty","jdbctobq.bigquery.location=DATASET .TABLE ", "--templateProperty","jdbctobq.jdbc.url=JDBC_CONNECTION_URL ", "--templateProperty","jdbctobq.jdbc.driver.class.name=DRIVER ", "--templateProperty","jdbctobq.sql=QUERY ", "--templateProperty","jdbctobq.write.mode=MODE ", "--templateProperty","jdbctobq.temp.gcs.bucket=TEMP_BUCKET ", "--templateProperty","jdbctobq.sql.partitionColumn=INPUT_PARTITION_COLUMN ", "--templateProperty","jdbctobq.sql.lowerBound=LOWERBOUND ", "--templateProperty","jdbctobq.sql.upperBound=UPPERBOUND ", "--templateProperty","jdbctobq.sql.numPartitions=PARTITIONS ", "--templateProperty","jdbctobq.jdbc.fetchsize=FETCHSIZE " ], "jarFileUris": [ "gs://dataproc-templates-binaries/TEMPLATE_VERSION /java/dataproc-templates.jar","gs://JDBC_CONNECTOR_GCS_PATH " ] } }
Pour envoyer votre requête, développez l'une des options suivantes :
curl (Linux, macOS ou Cloud Shell)
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataproc.googleapis.com/v1/projects/PROJECT_ID /locations/REGION /batches"
PowerShell (Windows)
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataproc.googleapis.com/v1/projects/PROJECT_ID /locations/REGION /batches" | Select-Object -Expand Content
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" } }