Modèle Cloud Storage vers Cloud Spanner
Utilisez le modèle Serverless pour Apache Spark Cloud Storage vers Spanner pour extraire des données de Cloud Storage vers Spanner.
Utiliser le modèle
Exécutez le modèle à l'aide de gcloud CLI 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 listé 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
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(consultez gs://dataproc-templates-binaries ou exécutezgcloud storage ls gs://dataproc-templates-binariespour lister les versions de modèle disponibles). - CLOUD_STORAGE_INPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage à partir duquel les données d'entrée seront lues.
Exemple :
gs://example-bucket/example-folder/ - FORMAT : valeur obligatoire. Format des données d'entrée. Options :
avro,parquetouorc. Remarque : Si la valeur estavro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'optionjarsde gcloud CLI ou au champ de l'API.Exemple (le préfixe
file://fait référence à un fichier jar Serverless pour Apache Spark) :--jars=file:///usr/lib/spark/connector/spark-avro.jar,[ ... other jars] - 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 de sortie Spanner.
- SPANNER_JDBC_DIALECT : valeur obligatoire. Dialecte JDBC Spanner.
Options :
googlesqloupostgresql. La valeur par défaut estgooglesql. - MODE : facultatif. Mode d'écriture pour la sortie Spanner.
Options :
Append,Overwrite,IgnoreouErrorifExists. La valeur par défaut estErrorifExists. - PRIMARY_KEY : valeur obligatoire. Colonnes de clé primaire séparées par une virgule requises lors de la création d'une table de sortie Spanner.
- BATCHSIZE : facultatif. Nombre d'enregistrements à insérer en un aller-retour dans la table Spanner. La valeur par défaut est de 1 000.
- SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.
- PROPERTY et PROPERTY_VALUE : facultatifs. Liste de paires propriété Spark=
valueséparées par une virgule. - LABEL et LABEL_VALUE : facultatifs. Liste de paires
label=valueséparées par une virgule. - LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de
ALL,DEBUG,ERROR,FATAL,INFO,OFF,TRACEouWARN. 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'une clé 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" \ --subnet="SUBNET" \ --kms-key="KMS_KEY" \ --service-account="SERVICE_ACCOUNT" \ --properties="PROPERTY=PROPERTY_VALUE" \ --labels="LABEL=LABEL_VALUE" \ -- --template GCSTOSPANNER \ --templateProperty log.level="LOG_LEVEL" \ --templateProperty project.id="PROJECT_ID" \ --templateProperty gcs.spanner.input.format="FORMAT" \ --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" \ --templateProperty gcs.spanner.output.instance="INSTANCE" \ --templateProperty gcs.spanner.output.database="DATABASE" \ --templateProperty gcs.spanner.output.table="TABLE" \ --templateProperty gcs.spanner.output.saveMode="MODE" \ --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" \ --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" \ --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://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ` --subnet="SUBNET" ` --kms-key="KMS_KEY" ` --service-account="SERVICE_ACCOUNT" ` --properties="PROPERTY=PROPERTY_VALUE" ` --labels="LABEL=LABEL_VALUE" ` -- --template GCSTOSPANNER ` --templateProperty log.level="LOG_LEVEL" ` --templateProperty project.id="PROJECT_ID" ` --templateProperty gcs.spanner.input.format="FORMAT" ` --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" ` --templateProperty gcs.spanner.output.instance="INSTANCE" ` --templateProperty gcs.spanner.output.database="DATABASE" ` --templateProperty gcs.spanner.output.table="TABLE" ` --templateProperty gcs.spanner.output.saveMode="MODE" ` --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" ` --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" ` --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://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar" ^ --subnet="SUBNET" ^ --kms-key="KMS_KEY" ^ --service-account="SERVICE_ACCOUNT" ^ --properties="PROPERTY=PROPERTY_VALUE" ^ --labels="LABEL=LABEL_VALUE" ^ -- --template GCSTOSPANNER ^ --templateProperty log.level="LOG_LEVEL" ^ --templateProperty project.id="PROJECT_ID" ^ --templateProperty gcs.spanner.input.format="FORMAT" ^ --templateProperty gcs.spanner.input.location="CLOUD_STORAGE_INPUT_PATH" ^ --templateProperty gcs.spanner.output.instance="INSTANCE" ^ --templateProperty gcs.spanner.output.database="DATABASE" ^ --templateProperty gcs.spanner.output.table="TABLE" ^ --templateProperty gcs.spanner.output.saveMode="MODE" ^ --templateProperty gcs.spanner.output.primaryKey="PRIMARY_KEY" ^ --templateProperty gcs.spanner.output.batchInsertSize="BATCHSIZE" ^ --templateProperty spanner.jdbc.dialect="SPANNER_JDBC_DIALECT"
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : valeur obligatoire. L'ID de votre projet Google Cloud listé 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
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(consultez gs://dataproc-templates-binaries ou exécutezgcloud storage ls gs://dataproc-templates-binariespour lister les versions de modèle disponibles). - CLOUD_STORAGE_INPUT_PATH : valeur obligatoire. Chemin d'accès Cloud Storage à partir duquel les données d'entrée seront lues.
Exemple :
gs://example-bucket/example-folder/ - FORMAT : valeur obligatoire. Format des données d'entrée. Options :
avro,parquetouorc. Remarque : Si la valeur estavro, vous devez ajouter "file:///usr/lib/spark/connector/spark-avro.jar" à l'optionjarsde gcloud CLI ou au champ de l'API.Exemple (le préfixe
file://fait référence à un fichier jar Serverless pour Apache Spark) :--jars=file:///usr/lib/spark/connector/spark-avro.jar,[ ... other jars] - 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 de sortie Spanner.
- SPANNER_JDBC_DIALECT : valeur obligatoire. Dialecte JDBC Spanner.
Options :
googlesqloupostgresql. La valeur par défaut estgooglesql. - MODE : facultatif. Mode d'écriture pour la sortie Spanner.
Options :
Append,Overwrite,IgnoreouErrorifExists. La valeur par défaut estErrorifExists. - PRIMARY_KEY : valeur obligatoire. Colonnes de clé primaire séparées par une virgule requises lors de la création d'une table de sortie Spanner.
- BATCHSIZE : facultatif. Nombre d'enregistrements à insérer en un aller-retour dans la table Spanner. La valeur par défaut est de 1 000.
- SERVICE_ACCOUNT : facultatif. Si aucune valeur n'est fournie, le compte de service Compute Engine par défaut est utilisé.
- PROPERTY et PROPERTY_VALUE : facultatifs. Liste de paires propriété Spark=
valueséparées par une virgule. - LABEL et LABEL_VALUE : facultatifs. Liste de paires
label=valueséparées par une virgule. - LOG_LEVEL : facultatif. Niveau de journalisation. Il peut s'agir de
ALL,DEBUG,ERROR,FATAL,INFO,OFF,TRACEouWARN. 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'une clé 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","GCSTOSPANNER",
"--templateProperty","project.id=PROJECT_ID",
"--templateProperty","log.level=LOG_LEVEL",
"--templateProperty","gcs.spanner.input.format=FORMAT",
"--templateProperty","gcs.spanner.input.location=CLOUD_STORAGE_INPUT_PATH",
"--templateProperty","gcs.spanner.output.instance=INSTANCE",
"--templateProperty","gcs.spanner.output.database=DATABASE",
"--templateProperty","gcs.spanner.output.table=TABLE",
"--templateProperty","gcs.spanner.output.saveMode=MODE",
"--templateProperty","gcs.spanner.output.primaryKey=PRIMARY_KEY",
"--templateProperty","gcs.spanner.output.batchInsertSize=BATCHSIZE",
"--templateProperty spanner.jdbc.dialect=SPANNER_JDBC_DIALECT"
],
"jarFileUris":[
"gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-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"
}
}