Il modello Spanner to Avro Files on Cloud Storage è una pipeline batch che esporta un intero database Spanner in Cloud Storage in formato Avro. L'esportazione di un database Spanner crea una cartella nel bucket che selezioni. La cartella contiene:
- Un file
spanner-export.json. - Un file
TableName-manifest.jsonper ogni tabella del database che hai esportato. - Uno o più file
TableName.avro-#####-of-#####.
Ad esempio, l'esportazione di un database con due tabelle, Singers e Albums,
crea il seguente set di file:
Albums-manifest.jsonAlbums.avro-00000-of-00002Albums.avro-00001-of-00002Singers-manifest.jsonSingers.avro-00000-of-00003Singers.avro-00001-of-00003Singers.avro-00002-of-00003spanner-export.json
Requisiti della pipeline
- Il database Spanner deve esistere.
- Il bucket Cloud Storage di output deve esistere.
- Oltre ai ruoli Identity and Access Management (IAM) necessari per eseguire i job Dataflow, devi disporre anche dei ruoli IAM appropriati per leggere i dati di Spanner e scrivere nel tuo bucket Cloud Storage.
Parametri del modello
Parametri obbligatori
- instanceId: l'ID istanza del database Spanner che vuoi esportare.
- databaseId: l'ID database del database Spanner che vuoi esportare.
- outputDir: il percorso Cloud Storage in cui esportare i file Avro. Il job di esportazione crea una nuova directory in questo percorso che contiene i file esportati. Ad esempio,
gs://your-bucket/your-path.
Parametri facoltativi
- avroTempDirectory: il percorso Cloud Storage in cui vengono scritti i file Avro temporanei.
- spannerHost: l'endpoint Cloud Spanner da chiamare nel modello. Utilizzato solo per i test. Ad esempio,
https://batch-spanner.googleapis.com. Il valore predefinito è https://batch-spanner.googleapis.com. - snapshotTime: il timestamp corrispondente alla versione del database Spanner che vuoi leggere. Il timestamp deve essere specificato utilizzando il formato RFC 3339 UTC
Zulu. Il timestamp deve essere nel passato e si applica la massima obsolescenza del timestamp. Ad esempio:1990-12-31T23:59:60Z. Il valore predefinito è vuoto. - spannerProjectId: l'ID del progetto Google Cloud che contiene il database Spanner da cui vuoi leggere i dati.
- shouldExportTimestampAsLogicalType: se
true, i timestamp vengono esportati come tipolongcon tipo logicotimestamp-micros. Per impostazione predefinita, questo parametro è impostato sufalsee i timestamp vengono esportati come stringhe ISO-8601 con precisione al nanosecondo. - tableNames: un elenco di tabelle separate da virgole che specificano il sottoinsieme del database Spanner da esportare. Se imposti questo parametro, devi includere tutte le tabelle correlate (tabelle principali e tabelle a cui fa riferimento la chiave esterna) o impostare il parametro
shouldExportRelatedTablessutrue.Se la tabella si trova nello schema denominato, utilizza il nome completo. Ad esempio:sch1.foo, in cuisch1è il nome dello schema efooè il nome della tabella. Il valore predefinito è vuoto. - shouldExportRelatedTables: indica se includere le tabelle correlate. Questo parametro viene utilizzato insieme al parametro
tableNames. Il valore predefinito è false. - spannerPriority: la priorità della richiesta per le chiamate Spanner. I valori possibili sono
HIGH,MEDIUMeLOW. Il valore predefinito èMEDIUM. - dataBoostEnabled: impostalo su
trueper utilizzare le risorse di computing di Spanner Data Boost per eseguire il job con un impatto quasi nullo sui workflow Spanner OLTP. Se impostato sutrue, è necessaria anche l'autorizzazione IAMspanner.databases.useDataBoost. Per saperne di più, consulta la panoramica di Data Boost (https://cloud.google.com/spanner/docs/databoost/databoost-overview). Il valore predefinito è false. - checksumAlgorithm: l'algoritmo di checksum da utilizzare per i file esportati. I valori possibili sono MD5 e CRC32C. Il valore predefinito è MD5.
Esegui il modello
Console
- Vai alla pagina Crea job da modello di Dataflow. Vai a Crea job da modello
- Nel campo Nome job, inserisci un nome univoco per il job.
- (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione
predefinita è
us-central1.Per un elenco delle regioni in cui puoi eseguire un job Dataflow, consulta Località di Dataflow.
- Nel menu a discesa Modello Dataflow, seleziona il modello Cloud Spanner in file Avro su Cloud Storage.
- Nei campi dei parametri forniti, inserisci i valori dei parametri.
- Fai clic su Esegui job.
gcloud
Questo esempio utilizza il comando
gcloud dataflow jobs run.
Nella shell o nel terminale, esegui il modello:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/ \ --region REGION_NAME \ --staging-location GCS_STAGING_LOCATION \ --parameters 'instanceId=INSTANCE_ID,databaseId=DATABASE_ID,outputDir=GCS_DIRECTORY'
Sostituisci quanto segue:
JOB_NAME: un nome univoco del job a tua sceltaAffinché il job venga visualizzato nella sezione Spanner della console Google Cloud , il nome del job deve corrispondere al formato
cloud-spanner--INSTANCE_ID-DATABASE_ID.VERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare l'ultima versione del modello, disponibile nella cartella principale senza data nel bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1GCS_STAGING_LOCATION: il percorso per la scrittura dei file temporanei; ad esempio,gs://mybucket/tempINSTANCE_ID: l'ID istanza SpannerDATABASE_ID: l'ID del tuo database SpannerGCS_DIRECTORY: il percorso Cloud Storage in cui i file Avro vengono importati da
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per saperne di più sull'API e sui relativi ambiti di autorizzazione, consulta projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/ { "jobName": "JOB_NAME", "parameters": { "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "outputDir": "gs://GCS_DIRECTORY" } }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME: un nome univoco del job a tua sceltaAffinché il job venga visualizzato nella sezione Spanner della console Google Cloud , il nome del job deve corrispondere al formato
cloud-spanner--INSTANCE_ID-DATABASE_ID.VERSION: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latestper utilizzare l'ultima versione del modello, disponibile nella cartella principale senza data nel bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale con data nel bucket: gs://dataflow-templates-REGION_NAME/
LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1GCS_STAGING_LOCATION: il percorso per la scrittura dei file temporanei; ad esempio,gs://mybucket/tempINSTANCE_ID: l'ID istanza SpannerDATABASE_ID: l'ID del tuo database SpannerGCS_DIRECTORY: il percorso Cloud Storage in cui i file Avro vengono importati da
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.