Modèle Cloud Spanner vers Cloud Storage
Utilisez le modèle Managed Service pour Apache Spark Cloud Spanner vers Cloud Storage pour extraire des données des bases de données Spanner vers Cloud Storage.
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 - 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). - INSTANCE : valeur obligatoire. ID de l'instance Spanner.
- DATABASE : valeur obligatoire. ID de la base de données Spanner.
- TABLE : valeur obligatoire. Nom de la table d'entrée Spanner ou
une requête SQL sur la table d'entrée Spanner.
Exemple (la requête SQL doit être entre parenthèses) :
(select * from TABLE) - SPANNER_JDBC_DIALECT : valeur obligatoire. Dialecte JDBC Spanner.
Options :
googlesqloupostgresql. La valeur par défaut estgooglesql. - CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.
Exemple :
gs://example-bucket/example-folder/ - FORMAT : valeur obligatoire. Format des données de sortie. Options :
avro,parquet,csv, oujson. Remarque : Si vous choisissezavro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'indicateur ou au champ d'APIjarsde la gcloud CLI.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 : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage.
Options :
append,overwrite,ignoreouerrorifexists. - NUM_PARTITIONS : facultatif. Nombre maximal de partitions pouvant être utilisées pour le parallélisme des lectures et des écritures de tables.
- INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND : facultatif. Si vous utilisez ces paramètres, vous devez spécifier les éléments suivants :
- INPUT_PARTITION_COLUMN: nom de la colonne de partition de la table d'entrée Spanner.
- LOWERBOUND : limite inférieure de la colonne de partition de la table d'entrée Spanner utilisée pour déterminer l' intervalle de partition.
- UPPERBOUND : limite supérieure de la colonne de partition de la table d'entrée Spanner utilisée pour déterminer l' intervalle de partition.
- TEMP_VIEW et TEMP_QUERY : facultatif. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans Cloud Storage. TEMP_VIEW 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. 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. - 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. -
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 clé gérée par Google 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://templates-binaries/TEMPLATE_VERSION/java/templates.jar" \ --subnet="SUBNET" \ --kms-key="KMS_KEY" \ --service-account="SERVICE_ACCOUNT" \ --properties="PROPERTY=PROPERTY_VALUE" \ --labels="LABEL=LABEL_VALUE" \ -- --template=SPANNERTOGCS \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty project.id="PROJECT_ID" \ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" \ --templateProperty spanner.gcs.input.database.id="DATABASE" \ --templateProperty spanner.gcs.input.table.id="TABLE" \ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" \ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" \ --templateProperty spanner.gcs.output.gcs.format="FORMAT" \ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" \ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" \ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" \ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" \ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" \ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" \ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
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://templates-binaries/TEMPLATE_VERSION/java/templates.jar" ` --subnet="SUBNET" ` --kms-key="KMS_KEY" ` --service-account="SERVICE_ACCOUNT" ` --properties="PROPERTY=PROPERTY_VALUE" ` --labels="LABEL=LABEL_VALUE" ` -- --template=SPANNERTOGCS ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty project.id="PROJECT_ID" ` --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ` --templateProperty spanner.gcs.input.database.id="DATABASE" ` --templateProperty spanner.gcs.input.table.id="TABLE" ` --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ` --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ` --templateProperty spanner.gcs.output.gcs.format="FORMAT" ` --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ` --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ` --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ` --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ` --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ` --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ` --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
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://templates-binaries/TEMPLATE_VERSION/java/templates.jar" ^ --subnet="SUBNET" ^ --kms-key="KMS_KEY" ^ --service-account="SERVICE_ACCOUNT" ^ --properties="PROPERTY=PROPERTY_VALUE" ^ --labels="LABEL=LABEL_VALUE" ^ -- --template=SPANNERTOGCS ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty spanner.gcs.input.spanner.id="INSTANCE" ^ --templateProperty spanner.gcs.input.database.id="DATABASE" ^ --templateProperty spanner.gcs.input.table.id="TABLE" ^ --templateProperty spanner.gcs.output.gcs.path="CLOUD_STORAGE_OUTPUT_PATH" ^ --templateProperty spanner.gcs.output.gcs.saveMode="MODE" ^ --templateProperty spanner.gcs.output.gcs.format="FORMAT" ^ --templateProperty spanner.gcs.input.sql.partitionColumn="INPUT_PARTITION_COLUMN" ^ --templateProperty spanner.gcs.input.sql.lowerBound="LOWERBOUND" ^ --templateProperty spanner.gcs.input.sql.upperBound="UPPERBOUND" ^ --templateProperty spanner.spanner.gcs.input.sql.numPartitions="NUM_PARTITIONS" ^ --templateProperty spanner.gcs.temp.table="TEMP_VIEW" ^ --templateProperty spanner.gcs.temp.query="TEMP_QUERY" ^ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
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 - 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). - INSTANCE : valeur obligatoire. ID de l'instance Spanner.
- DATABASE : valeur obligatoire. ID de la base de données Spanner.
- TABLE : valeur obligatoire. Nom de la table d'entrée Spanner ou
une requête SQL sur la table d'entrée Spanner.
Exemple (la requête SQL doit être entre parenthèses) :
(select * from TABLE) - SPANNER_JDBC_DIALECT : valeur obligatoire. Dialecte JDBC Spanner.
Options :
googlesqloupostgresql. La valeur par défaut estgooglesql. - CLOUD_STORAGE_OUTPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage où la sortie sera stockée.
Exemple :
gs://example-bucket/example-folder/ - FORMAT : valeur obligatoire. Format des données de sortie. Options :
avro,parquet,csv, oujson. Remarque : Si vous choisissezavro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'indicateur ou au champ d'APIjarsde la gcloud CLI.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 : valeur obligatoire. Mode d'écriture pour la sortie Cloud Storage.
Options :
append,overwrite,ignoreouerrorifexists. - NUM_PARTITIONS : facultatif. Nombre maximal de partitions pouvant être utilisées pour le parallélisme des lectures et des écritures de tables.
- INPUT_PARTITION_COLUMN,
LOWERBOUND,
UPPERBOUND : facultatif. Si vous utilisez ces paramètres, vous devez spécifier les éléments suivants :
- INPUT_PARTITION_COLUMN: nom de la colonne de partition de la table d'entrée Spanner.
- LOWERBOUND : limite inférieure de la colonne de partition de la table d'entrée Spanner utilisée pour déterminer l' intervalle de partition.
- UPPERBOUND : limite supérieure de la colonne de partition de la table d'entrée Spanner utilisée pour déterminer l' intervalle de partition.
- TEMP_VIEW et TEMP_QUERY : facultatif. Vous pouvez utiliser ces deux paramètres facultatifs pour appliquer une transformation Spark SQL lors du chargement de données dans Cloud Storage. TEMP_VIEW 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. 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. - 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. -
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 clé gérée par Google 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","SPANNERTOGCS",
"--templateProperty","log.level=LOG_LEVEL",
"--templateProperty","project.id=PROJECT_ID",
"--templateProperty","spanner.gcs.input.spanner.id=INSTANCE",
"--templateProperty","spanner.gcs.input.database.id=DATABASE",
"--templateProperty","spanner.gcs.input.table.id=TABLE",
"--templateProperty","spanner.gcs.output.gcs.path=CLOUD_STORAGE_OUTPUT_PATH",
"--templateProperty","spanner.gcs.output.gcs.saveMode=MODE",
"--templateProperty","spanner.gcs.output.gcs.format=FORMAT",
"--templateProperty","spanner.gcs.input.sql.partitionColumn=INPUT_PARTITION_COLUMN",
"--templateProperty","spanner.gcs.input.sql.lowerBound=LOWERBOUND",
"--templateProperty","spanner.gcs.input.sql.upperBound=UPPERBOUND",
"--templateProperty","spanner.gcs.input.sql.numPartitions=NUM_PARTITIONS",
"--templateProperty","spanner.gcs.temp.table=TEMP_VIEW",
"--templateProperty","spanner.gcs.temp.query=TEMP_QUERY",
"--templateProperty spanner.jdbc.dialect=SPANNER_JDBC_DIALECT"
],
"jarFileUris":[
"file:///usr/lib/spark/connector/spark-avro.jar", "gs://templates-binaries/TEMPLATE_VERSION/java/templates.jar"
]
}
}
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"
}
}