Il modello di modifiche in tempo reale di Spanner a Cloud Storage è una pipeline di streaming che trasmette i record delle modifiche dei dati di Spanner e li scrive in un bucket Cloud Storage utilizzando Dataflow Runner v2.
La pipeline raggruppa i record dello stream delle modifiche di Spanner in finestre in base al timestamp, e ogni finestra rappresenta una durata di tempo la cui lunghezza puoi configurare con questo modello. Tutti i record con timestamp appartenenti alla finestra sono garantiti all'interno della finestra; non possono esserci arrivi in ritardo. Puoi anche definire un numero di shard di output; la pipeline crea un file di output Cloud Storage per finestra per shard. All'interno di un file di output, i record non sono ordinati. I file di output possono essere scritti in formato JSON o AVRO, a seconda della configurazione dell'utente.
Tieni presente che puoi ridurre al minimo la latenza di rete e i costi di trasporto di rete eseguendo il job Dataflow dalla stessa regione dell'istanza Spanner o del bucket Cloud Storage. Se utilizzi origini, sink, posizioni dei file di staging o posizioni dei file temporanei che si trovano al di fuori della regione del job, i tuoi dati potrebbero essere inviati tra regioni diverse. Scopri di più sulle regioni Dataflow.
Scopri di più sui flussi di modifiche, su come creare pipeline Dataflow per i flussi di modifiche e sulle best practice.
Requisiti della pipeline
- L'istanza Spanner deve esistere prima dell'esecuzione della pipeline.
- Il database Spanner deve esistere prima dell'esecuzione della pipeline.
- L'istanza dei metadati di Spanner deve esistere prima dell'esecuzione della pipeline.
- Il database dei metadati Spanner deve esistere prima dell'esecuzione della pipeline.
- Lo stream di modifiche Spanner deve esistere prima dell'esecuzione della pipeline.
- Il bucket di output Cloud Storage deve esistere prima dell'esecuzione della pipeline.
Parametri del modello
Parametri obbligatori
- spannerInstanceId: l'ID istanza Spanner da cui leggere i dati modifiche in tempo reale.
- spannerDatabase: il database Spanner da cui leggere i dati modifiche in tempo reale.
- spannerMetadataInstanceId: l'ID istanza Spanner da utilizzare per la tabella dei metadati del connettore di modifiche in tempo reale.
- spannerMetadataDatabase: il database Spanner da utilizzare per la tabella dei metadati del connettore di modifiche in tempo reale.
- spannerChangeStreamName: il nome della modifica in tempo reale di Spanner da cui leggere.
- gcsOutputDirectory: il prefisso di percorso e nome file per scrivere i file di output. Deve terminare con una barra. La formattazione DateTime viene utilizzata per analizzare il percorso della directory per i formattatori di data e ora. Ad esempio,
gs://your-bucket/your-path
.
Parametri facoltativi
- spannerProjectId: l'ID del progetto Google Cloud che contiene il database Spanner da cui leggere modifiche in tempo reale. In questo progetto viene creata anche la tabella dei metadati del connettore di modifiche in tempo reale. Il valore predefinito di questo parametro è il progetto in cui è in esecuzione la pipeline Dataflow.
- spannerDatabaseRole: il ruolo database di Spanner da utilizzare durante l'esecuzione del modello. Questo parametro è obbligatorio solo quando l'entità IAM che esegue il modello è un utente con controllo dell'accesso dell'accesso granulare. Il ruolo del database deve disporre del privilegio
SELECT
sul flusso di modifiche e del privilegioEXECUTE
sulla funzione di lettura del flusso di modifiche. Per saperne di più, consulta Controllo dell'accesso granulare per gli modifiche in tempo reale (https://cloud.google.com/spanner/docs/fgac-change-streams). - spannerMetadataTableName: il nome della tabella dei metadati del connettore Spanner modifiche in tempo reale da utilizzare. Se non viene fornita, durante l'esecuzione della pipeline viene creata automaticamente una tabella dei metadati modifiche in tempo reale di Spanner. Devi fornire un valore per questo parametro quando aggiorni una pipeline esistente. In caso contrario, non utilizzare questo parametro.
- startTimestamp: la data e l'ora di inizio, inclusa, da utilizzare per la lettura modifiche in tempo reale, nel formato
Ex-2021-10-12T07:20:50.52Z
. Il valore predefinito è il timestamp dell'inizio della pipeline, ovvero l'ora attuale. - endTimestamp: la data e l'ora di fine, inclusa, da utilizzare per la lettura dei modifiche in tempo reale. Ad esempio,
Ex-2021-10-12T07:20:50.52Z
. Il valore predefinito è un tempo infinito nel futuro. - spannerHost: l'endpoint Cloud Spanner da chiamare nel modello. Utilizzato solo per i test. Ad esempio,
https://spanner.googleapis.com
. Il valore predefinito è https://spanner.googleapis.com. - outputFileFormat: il formato del file Cloud Storage di output. I formati consentiti sono
TEXT
eAVRO
. Il valore predefinito èAVRO
. - windowDuration: la durata della finestra è l'intervallo in cui i dati vengono scritti nella directory di output. Configura la durata in base alla velocità effettiva della pipeline. Ad esempio, una velocità effettiva più elevata potrebbe richiedere dimensioni della finestra più piccole in modo che i dati rientrino nella memoria. Il valore predefinito è 5 minuti, con un minimo di 1 secondo. I formati consentiti sono: [int]s (per i secondi, ad esempio 5s), [int]m (per i minuti, ad esempio 12m), [int]h (per le ore, ad esempio 2h). Ad esempio,
5m
. - rpcPriority: la priorità della richiesta per le chiamate Spanner. Il valore deve essere
HIGH
,MEDIUM
oLOW
. Il valore predefinito èHIGH
. - outputFilenamePrefix: il prefisso da inserire in ogni file in finestra. Ad esempio,
output-
. Il valore predefinito è output. - numShards: il numero massimo di shard di output prodotti durante la scrittura. Un numero maggiore di shard significa una velocità effettiva più elevata per la scrittura in Cloud Storage, ma potenzialmente un costo di aggregazione dei dati più elevato tra gli shard durante l'elaborazione dei file Cloud Storage di output. Il valore predefinito è 20.
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.
- Dal menu a discesa Modello di dataflow, seleziona the Cloud Spanner change streams to Google Cloud Storage template.
- Nei campi dei parametri forniti, inserisci i valori dei parametri.
- Fai clic su Esegui job.
gcloud
Nella shell o nel terminale, esegui il modello:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_Change_Streams_to_Google_Cloud_Storage \ --region REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabase=SPANNER_DATABASE,\ spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\ spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\ spannerChangeStreamName=SPANNER_CHANGE_STREAM,\ gcsOutputDirectory=GCS_OUTPUT_DIRECTORY
Sostituisci quanto segue:
JOB_NAME
: un nome univoco del job a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per 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-central1
SPANNER_INSTANCE_ID
: ID istanza Cloud SpannerSPANNER_DATABASE
: Database Cloud SpannerSPANNER_METADATA_INSTANCE_ID
: ID istanza metadati Cloud SpannerSPANNER_METADATA_DATABASE
: Database dei metadati di Cloud SpannerSPANNER_CHANGE_STREAM
: Modifica in tempo reale Cloud SpannerGCS_OUTPUT_DIRECTORY
: posizione del file per l'output dei modifiche in tempo reale
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per ulteriori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabase": "SPANNER_DATABASE", "spannerMetadataInstanceId": "SPANNER_METADATA_INSTANCE_ID", "spannerMetadataDatabase": "SPANNER_METADATA_DATABASE", "spannerChangeStreamName": "SPANNER_CHANGE_STREAM", "gcsOutputDirectory": "GCS_OUTPUT_DIRECTORY" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_Change_Streams_to_Google_Cloud_Storage", } }
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 sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per 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-central1
SPANNER_INSTANCE_ID
: ID istanza Cloud SpannerSPANNER_DATABASE
: Database Cloud SpannerSPANNER_METADATA_INSTANCE_ID
: ID istanza metadati Cloud SpannerSPANNER_METADATA_DATABASE
: Database dei metadati di Cloud SpannerSPANNER_CHANGE_STREAM
: Modifica in tempo reale Cloud SpannerGCS_OUTPUT_DIRECTORY
: posizione del file per l'output dei modifiche in tempo reale
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.