Modèle Cloud Storage vers JDBC
Utilisez le modèle Managed Service 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 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
defaultest 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. Chemin d'accès Cloud Storage
où les fichiers d'entrée sont stockés.
Exemple :
gs://templates/cloud_storage_to_jdbc_input - FORMAT : valeur obligatoire. Format des données de sortie. Options :
avro,parquet,csvouorc. Valeur par défaut :avro. Remarque : Si vous utilisezavro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'indicateurjarsde la gcloud CLI ou au champ d'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 : facultatif. Mode d'écriture pour la sortie Cloud Storage.
Options :
Append,Overwrite,Ignore, ouErrorIfExists. Valeur par défaut :ErrorIfExists. - Les variables suivantes sont utilisées pour créer le requis
JDBC_CONNECTION_URL:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE ou, pour Oracle, JDBC_SERVICE
- 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 - 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
latestpour 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://templates-binaries ou exécutezgcloud storage ls gs://templates-binariespour afficher la liste des versions de modèle disponibles). - LOG_LEVEL : facultatif. Niveau de journalisation. Peut être l'une des valeurs suivantes :
ALL,DEBUG,ERROR,FATAL,INFO,OFF,TRACEouWARN. Valeur par défaut :INFO. - NUM_PARTITIONS : facultatif. Nombre maximal de
partitions pouvant être utilisées pour le parallélisme des écritures de table.
Si cette valeur est spécifiée, elle 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:
facultatif. Liste de paires
Spark property=
valueséparées par une virgule. - LABEL et LABEL_VALUE :
facultatif. Liste de paires
label=valuesé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 au repos sont chiffrées à l'aide d'une 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://templates-binaries/TEMPLATE_VERSION/java/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://templates-binaries/TEMPLATE_VERSION/java/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://templates-binaries/TEMPLATE_VERSION/java/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. 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
defaultest 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. Chemin d'accès Cloud Storage
où les fichiers d'entrée sont stockés.
Exemple :
gs://templates/cloud_storage_to_jdbc_input - FORMAT : valeur obligatoire. Format des données de sortie. Options :
avro,parquet,csvouorc. Valeur par défaut :avro. Remarque : Si vous utilisezavro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'indicateurjarsde la gcloud CLI ou au champ d'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 : facultatif. Mode d'écriture pour la sortie Cloud Storage.
Options :
Append,Overwrite,Ignore, ouErrorIfExists. Valeur par défaut :ErrorIfExists. - Les variables suivantes sont utilisées pour créer le requis
JDBC_CONNECTION_URL:
- JDBC_HOST
- JDBC_PORT
- JDBC_DATABASE ou, pour Oracle, JDBC_SERVICE
- 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 - 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
latestpour 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://templates-binaries ou exécutezgcloud storage ls gs://templates-binariespour afficher la liste des versions de modèle disponibles). - LOG_LEVEL : facultatif. Niveau de journalisation. Peut être l'une des valeurs suivantes :
ALL,DEBUG,ERROR,FATAL,INFO,OFF,TRACEouWARN. Valeur par défaut :INFO. - NUM_PARTITIONS : facultatif. Nombre maximal de
partitions pouvant être utilisées pour le parallélisme des écritures de table.
Si cette valeur est spécifiée, elle 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:
facultatif. Liste de paires
Spark property=
valueséparées par une virgule. - LABEL et LABEL_VALUE :
facultatif. Liste de paires
label=valuesé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 au repos sont chiffrées à l'aide d'une 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://templates-binaries/TEMPLATE_VERSION/java/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"
}
}