Il modello di modifiche in tempo reale di Bigtable è una pipeline di inserimento flussi che trasmette i flussi di record delle modifiche dei dati di Bigtable e li scrive nelle tabelle BigQuery utilizzando Dataflow.
Un flusso di modifiche di Bigtable ti consente di sottoscrivere mutazioni dei dati in base alla tabella. Quando ti abboni alle modifiche in tempo reale delle tabelle, si applicano i seguenti vincoli:
- Vengono restituite solo le celle modificate e i descrittori delle operazioni di eliminazione.
- Viene restituito solo il nuovo valore di una cella modificata.
Quando i record delle modifiche dei dati vengono scritti in BigQuery, le righe potrebbero essere inserite in modo non ordinato rispetto all'ordine originale del timestamp di commit di Bigtable.
Le righe della tabella del log delle modifiche che non possono essere scritte in BigQuery a causa di un errore permanente vengono inserite definitivamente in una directory di coda di messaggi non recapitabili (coda di messaggi non elaborati) in Cloud Storage per la revisione umana o un'ulteriore elaborazione da parte dell'utente.
Se la tabella BigQuery necessaria non esiste, la pipeline la crea. In caso contrario, viene utilizzata una tabella BigQuery esistente. Lo schema delle tabelle BigQuery esistenti deve contenere le colonne della tabella seguente.
Ogni nuova riga BigQuery include un record delle modifiche dei dati restituito dal flusso di modifiche dalla riga corrispondente nella tabella Bigtable.
Schema della tabella di output BigQuery
Nome colonna | Tipo | Ammette valori Null | Descrizione |
---|---|---|---|
row_key |
STRING o BYTES |
No | La chiave di riga della riga modificata. Se l'opzione pipeline writeRowkeyAsBytes è impostata su true , il tipo di colonna deve essere BYTES . In caso contrario, utilizza il tipo STRING . |
mod_type |
STRING |
No | Il tipo di mutazione della riga. Utilizza uno dei seguenti valori: SET_CELL , DELETE_CELLS o DELETE_FAMILY . |
column_family |
STRING |
No | La famiglia di colonne interessata dalla mutazione della riga. |
column |
STRING |
Sì | Il qualificatore di colonna interessato dalla mutazione della riga. Per il tipo di mutazione DELETE_FAMILY , imposta su NULL . |
commit_timestamp |
TIMESTAMP |
No | Data e ora in cui Bigtable applica la mutazione. |
big_query_commit_timestamp |
TIMESTAMP |
Sì | (Facoltativo) Specifica l'ora in cui BigQuery scrive la riga in una tabella di output. Il campo non viene compilato se il nome della colonna è presente nel valore dell'opzione pipeline bigQueryChangelogTableFieldsToIgnore . |
timestamp |
TIMESTAMP o INT64 |
Sì | Il valore del timestamp della cella interessata dalla mutazione. Se l'opzione pipeline writeNumericTimestamps è impostata su true , il tipo di colonna deve essere INT64 . In caso contrario, usa il tipo TIMESTAMP .
Per i tipi di mutazione DELETE_CELLS e DELETE_FAMILY , imposta su NULL . |
timestamp_from |
TIMESTAMP o INT64 |
Sì | Descrive un inizio inclusivo dell'intervallo timestamp per tutte le celle eliminate dalla mutazione DELETE_CELLS . Per altri tipi di mutazione, imposta su NULL . |
timestamp_to |
TIMESTAMP o INT64 |
Sì | Descrive una fine esclusiva dell'intervallo timestamp per tutte le celle eliminate dalla mutazione DELETE_CELLS . Per altri tipi di mutazione, imposta su NULL . |
is_gc |
BOOL |
No | (Facoltativo) Quando la mutazione viene attivata da un criterio di garbage collection, imposta su true .
In tutti gli altri casi, imposta su false . Il campo non viene compilato se è presente il nome della colonna nel valore dell'opzione pipeline bigQueryChangelogTableFieldsToIgnore . |
source_instance |
STRING |
No | (Facoltativo) Descrive il nome dell'istanza Bigtable da cui proviene la mutazione. Il campo non viene compilato se è presente il nome della colonna nel valore dell'opzione pipeline bigQueryChangelogTableFieldsToIgnore . |
source_cluster |
STRING |
No | (Facoltativo) Descrive il nome del cluster Bigtable da cui proviene la mutazione. Il campo non viene compilato se è presente il nome della colonna nel valore dell'opzione pipeline bigQueryChangelogTableFieldsToIgnore . |
source_table |
STRING |
No | (Facoltativo) Descrive il nome della tabella Bigtable a cui si applica la mutazione. Il valore in questa colonna può essere utile se più tabelle Bigtable eseguono il flusso di modifiche alla stessa tabella BigQuery. Il campo non viene compilato se è presente il nome della colonna nel valore dell'opzione pipeline bigQueryChangelogTableFieldsToIgnore . |
tiebreaker |
INT64 |
No | (Facoltativo) Quando due mutazioni vengono registrate contemporaneamente da cluster Bigtable diversi, la mutazione con il valore tiebreaker più alto viene applicata alla tabella di origine. Le mutazioni con valori tiebreaker più bassi vengono ignorate. Il campo non viene compilato se è presente il nome della colonna nel valore dell'opzione pipeline bigQueryChangelogTableFieldsToIgnore . |
value |
STRING o BYTES |
Sì | Il nuovo valore impostato dalla mutazione. Se l'opzione pipeline writeValuesAsBytes è impostata su true , il tipo di colonna deve essere BYTES . In caso contrario, utilizza il tipo STRING . Il valore è impostato per SET_CELL mutazioni. Per gli altri tipi di mutazione, il valore è impostato su NULL . |
Requisiti della pipeline
- L'istanza di origine Bigtable specificata.
- La tabella di origine Bigtable specificata. Nella tabella devono essere abilitati modifiche in tempo reale.
- Il profilo di applicazione Bigtable specificato.
- Il set di dati di destinazione BigQuery specificato.
Parametri del modello
Parametri obbligatori
- bigQueryDataset : il nome del set di dati della tabella BigQuery di destinazione.
- bigtableChangeStreamAppProfile : l'ID profilo dell'applicazione Bigtable. Il profilo di applicazione deve utilizzare il routing a cluster singolo e consentire transazioni su riga singola.
- bigtableReadInstanceId : l'ID dell'istanza Bigtable di origine.
- bigtableReadTableId : l'ID tabella Bigtable di origine.
Parametri facoltativi
- writeRowkeyAsBytes : se scrivere chiavi-riga come BigQuery
BYTES
. Se impostato sutrue
, le chiavi di riga vengono scritte nella colonnaBYTES
. In caso contrario, i valori rowkey vengono scritti nella colonnaSTRING
. Il valore predefinito èfalse
. - writeValuesAsBytes : se viene impostato un valore true, i valori veri vengono scritti nella colonna BYTES, altrimenti nella colonna STRING. Il valore predefinito è false.
- writeNumericTimestamps : se scrivere il timestamp di Bigtable come BigQuery
INT64
. Se il criterio è impostato su true, i valori vengono scritti nella colonnaINT64
. In caso contrario, i valori vengono scritti nella colonnaTIMESTAMP
. Colonne interessate:timestamp
,timestamp_from
etimestamp_to
. Il valore predefinito èfalse
. Se impostato sutrue
, l'ora viene misurata in microsecondi dall'epoca di Unix (1° gennaio 1970 alle ore UTC). - bigQueryProjectId : l'ID del progetto del set di dati BigQuery. Il valore predefinito è il progetto per il job Dataflow.
- bigQueryChangelogTableName : nome della tabella BigQuery di destinazione. Se non specificato, viene utilizzato il valore
bigtableReadTableId + "_changelog"
. Il campo predefinito è vuoto. - bigQueryChangelogTablePartitionGranularity : specifica una granularità per il partizionamento della tabella del log delle modifiche. Se impostato, la tabella è partizionata. Utilizza uno dei seguenti valori supportati:
HOUR
,DAY
,MONTH
oYEAR
. Per impostazione predefinita, la tabella non è partizionata. - bigQueryChangelogTablePartitionExpirationMs : imposta la scadenza della partizione della tabella del log delle modifiche, in millisecondi. Se impostato su true, le partizioni precedenti al numero di millisecondi specificato vengono eliminate. Per impostazione predefinita, non è impostata alcuna scadenza.
- bigQueryChangelogTableFieldsToIgnore : un elenco separato da virgole di colonne del log delle modifiche che, se specificate, non vengono create né compilate. Utilizza uno dei seguenti valori supportati:
is_gc
,source_instance
,source_cluster
,source_table
,tiebreaker
obig_query_commit_timestamp
. Per impostazione predefinita, tutte le colonne sono compilate. - dlqDirectory : la directory da utilizzare per la coda dei messaggi non recapitabili. I record che non vengono elaborati vengono archiviati in questa directory. L'impostazione predefinita è una directory all'interno della località temporanea del job Dataflow. Nella maggior parte dei casi, puoi utilizzare il percorso predefinito.
- bigtableChangeStreamMetadataInstanceId : la modifica di Bigtable trasmette l'ID istanza dei metadati. Il campo predefinito è vuoto.
- bigtableChangeStreamMetadataTableTableId : l'ID della tabella dei metadati del connettore delle modifiche in tempo reale di Bigtable. Se non viene specificata, durante l'esecuzione della pipeline viene creata automaticamente una tabella dei metadati del connettore delle modifiche in tempo reale di Bigtable. Il campo predefinito è vuoto.
- bigtableChangeStreamCharset : il nome del set di caratteri modifiche in tempo reale di Bigtable. Il valore predefinito è: UTF-8.
- bigtableChangeStreamStartTimestamp : il timestamp iniziale (https://tools.ietf.org/html/rfc3339), incluso, da utilizzare per la lettura delle modifiche in tempo reale. Ad esempio:
2022-05-05T07:59:59Z
. Il valore predefinito è il timestamp dell'ora di inizio della pipeline. - bigtableChangeStreamIgnoreColumnFamilies : un elenco separato da virgole di modifiche al nome della famiglia di colonne da ignorare. Il campo predefinito è vuoto.
- bigtableChangeStreamIgnoreColumns : un elenco separato da virgole di modifiche ai nomi delle colonne da ignorare. Il campo predefinito è vuoto.
- bigtableChangeStreamName : un nome univoco per la pipeline del client. Consente di riprendere l'elaborazione dal momento in cui è stata arrestata una pipeline in esecuzione in precedenza. Il nome predefinito è generato automaticamente. Controlla i log del job Dataflow per il valore utilizzato.
- bigtableChangeStreamResume : se impostato su
true
, l'elaborazione di una nuova pipeline riprende dal punto in cui è stata interrotta una pipeline precedentemente in esecuzione con lo stesso valorebigtableChangeStreamName
. Se la pipeline con il valorebigtableChangeStreamName
specificato non è mai stata eseguita, non ne viene avviata una nuova. Se il valore è impostato sufalse
, viene avviata una nuova pipeline. Se è già stata eseguita una pipeline con lo stesso valorebigtableChangeStreamName
per l'origine specificata, non ne viene avviata una nuova. Il valore predefinito èfalse
. - bigtableReadProjectId : l'ID progetto Bigtable. Il valore predefinito è il progetto per il job Dataflow.
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 di regioni in cui è possibile eseguire un job Dataflow, consulta Località di Dataflow.
- Dal menu a discesa Modello Dataflow, seleziona the Bigtable change streams to BigQuery template.
- Inserisci i valori parametro negli appositi campi.
- Fai clic su Esegui job.
gcloud
Nella shell o nel terminale, esegui il modello:
gcloud dataflow flex-template run JOB_NAME \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Bigtable_Change_Streams_to_BigQuery \ --parameters \ bigtableReadInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableReadTableId=BIGTABLE_TABLE_ID,\ bigtableChangeStreamAppProfile=BIGTABLE_APPLICATION_PROFILE_ID,\ bigQueryDataset=BIGQUERY_DESTINATION_DATASET
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del 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 è possibile trovare 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
BIGTABLE_INSTANCE_ID
: l'ID dell'istanza Bigtable.BIGTABLE_TABLE_ID
: l'ID della tua tabella Bigtable.BIGTABLE_APPLICATION_PROFILE_ID
: l'ID del profilo della tua applicazione Bigtable.BIGQUERY_DESTINATION_DATASET
: il nome del set di dati di destinazione BigQuery
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori 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", "containerSpecGcsPath": "gs://dataflow-templates-REGION_NAME/VERSION/flex/Bigtable_Change_Streams_to_BigQuery", "parameters": { "bigtableReadInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableReadTableId": "BIGTABLE_TABLE_ID", "bigtableChangeStreamAppProfile": "BIGTABLE_APPLICATION_PROFILE_ID", "bigQueryDataset": "BIGQUERY_DESTINATION_DATASET" } } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella padre non con data del 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 è possibile trovare 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
BIGTABLE_INSTANCE_ID
: l'ID dell'istanza Bigtable.BIGTABLE_TABLE_ID
: l'ID della tua tabella Bigtable.BIGTABLE_APPLICATION_PROFILE_ID
: l'ID del profilo della tua applicazione Bigtable.BIGQUERY_DESTINATION_DATASET
: il nome del set di dati di destinazione BigQuery
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.