Il modello di modifiche in tempo reale di Bigtable in BigQuery è una pipeline di inserimento flussi che trasmette il flusso dei record delle modifiche dei dati di Bigtable e li scrive nelle tabelle BigQuery mediante Dataflow.
Un stream di modifiche di Bigtable ti consente di sottoscrivere le mutazioni dei dati in base alla tabella. Quando ti abboni ai modifiche in tempo reale delle tabelle, si applicano i seguenti vincoli:
- Vengono restituiti 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 nell'ordine sbagliato rispetto all'ordine del timestamp di commit originale di Bigtable.
Le righe della tabella del log delle modifiche che non possono essere scritte in BigQuery a causa di un errore persistente vengono inserite definitivamente in una directory di code di messaggi non elaborati (coda di messaggi non elaborati) in Cloud Storage per la revisione da parte di persone fisiche o un'ulteriore elaborazione da parte dell'utente.
Se la tabella BigQuery necessaria non esiste, viene creata dalla pipeline. In caso contrario, viene utilizzata una tabella BigQuery esistente. Lo schema delle tabelle BigQuery esistenti deve contenere le colonne della seguente tabella.
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. Quando l'opzione della 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 modifica della riga. |
column |
STRING |
Sì | Il qualificatore di colonna interessato dalla modifica della riga. Per il tipo di mutazione DELETE_FAMILY , impostato su NULL . |
commit_timestamp |
TIMESTAMP |
No | L'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 della pipeline bigQueryChangelogTableFieldsToIgnore . |
timestamp |
TIMESTAMP o INT64 |
Sì | Il valore del timestamp della cella interessata dalla mutazione. Quando l'opzione della pipeline writeNumericTimestamps è impostata su true , il tipo di colonna deve essere INT64 . In caso contrario, utilizza il tipo TIMESTAMP .
Per i tipi di mutazione DELETE_CELLS e DELETE_FAMILY , impostato su NULL . |
timestamp_from |
TIMESTAMP o INT64 |
Sì | Descrive un inizio inclusivo dell'intervallo di timestamp per tutte le celle eliminate dalla mutazione DELETE_CELLS . Per altri tipi di mutazioni, imposta su NULL . |
timestamp_to |
TIMESTAMP o INT64 |
Sì | Descrive una fine esclusiva dell'intervallo del timestamp per tutte le celle eliminate dalla mutazione DELETE_CELLS . Per altri tipi di mutazioni, imposta su NULL . |
is_gc |
BOOL |
No | (Facoltativo) Quando la mutazione viene attivata da un criterio di garbage collection, impostato su true .
In tutti gli altri casi, imposta su false . Il campo non viene compilato se il nome della colonna è presente nel valore dell'opzione della pipeline bigQueryChangelogTableFieldsToIgnore . |
source_instance |
STRING |
No | (Facoltativo) Descrive il nome dell'istanza Bigtable da cui proviene la mutazione. Il campo non viene compilato se il nome della colonna è presente nel valore dell'opzione della pipeline bigQueryChangelogTableFieldsToIgnore . |
source_cluster |
STRING |
No | (Facoltativo) Descrive il nome del cluster Bigtable da cui proviene la mutazione. Il campo non viene compilato se il nome della colonna è presente nel valore dell'opzione della pipeline bigQueryChangelogTableFieldsToIgnore . |
source_table |
STRING |
No | (Facoltativo) Descrive il nome della tabella Bigtable a cui si applica la modifica. Il valore in questa colonna potrebbe essere utile se più tabelle Bigtable trasmettono le modifiche alla stessa tabella BigQuery. Il campo non viene compilato se il nome della colonna è presente nel valore dell'opzione della 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 il nome della colonna è presente nel valore dell'opzione della pipeline bigQueryChangelogTableFieldsToIgnore . |
value |
STRING o BYTES |
Sì | Il nuovo valore impostato dalla mutazione. Quando l'opzione della 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 altri tipi di mutazioni, 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 dell'applicazione Bigtable specificato.
- Il set di dati BigQuery di destinazione specificato.
Parametri del modello
Parametro | Descrizione |
---|---|
bigtableReadInstanceId |
L'ID dell'istanza Bigtable di origine. |
bigtableReadTableId |
L'ID della tabella Bigtable di origine. |
bigtableChangeStreamAppProfile |
L'ID profilo dell'applicazione Bigtable. Il profilo di applicazione deve utilizzare il routing a cluster singolo e consentire transazioni su riga singola. |
bigQueryDataset |
Il nome del set di dati della tabella BigQuery di destinazione. |
writeNumericTimestamps |
(Facoltativo) Scrivi il timestamp di Bigtable come BigQuery INT64 . Se impostato su true , i valori vengono scritti nella colonna INT64 . In caso contrario, i valori vengono scritti nella colonna TIMESTAMP . Colonne interessate: timestamp , timestamp_from e timestamp_to . Il valore predefinito è false . Se impostato su true , l'ora viene misurata in microsecondi dall'epoca di Unix (1° gennaio 1970, UTC). |
writeRowkeyAsBytes |
(Facoltativo) Scrivi le chiavi di riga come BigQuery BYTES . Se il criterio è impostato su true , le chiavi di riga vengono scritte nella colonna BYTES . In caso contrario, le chiavi rowkey vengono scritte nella colonna STRING . Il valore predefinito è false . |
writeValuesAsBytes |
(Facoltativo) Scrivi i valori come BYTES in BigQuery. Se impostato su true , i valori vengono scritti nella colonna BYTES . In caso contrario, i valori vengono scritti nella colonna STRING . Il valore predefinito è false . |
bigQueryChangelogTableName |
(Facoltativo) Nome della tabella BigQuery di destinazione. Se non specificato, viene utilizzato il valore bigtableReadTableId + "_changelog" |
bigQueryProjectId |
(Facoltativo) L'ID progetto del set di dati BigQuery. Il valore predefinito è il progetto per il job Dataflow. |
bigtableReadProjectId |
(Facoltativo) L'ID progetto Bigtable. Il valore predefinito è il progetto per il job Dataflow. |
bigtableChangeStreamMetadataInstanceId |
(Facoltativo) L'ID istanza metadati delle modifiche in tempo reale di Bigtable. |
bigtableChangeStreamMetadataTableTableId |
(Facoltativo) L'ID della tabella dei metadati dei modifiche in tempo reale di Bigtable. |
bigtableChangeStreamCharset |
(Facoltativo) La modifica del nome del set di caratteri di Bigtable durante la lettura dei valori e dei qualificatori di colonna. |
bigtableChangeStreamStartTimestamp |
(Facoltativo) Il timestamp iniziale 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 |
(Facoltativo) Un elenco separato da virgole dei nomi della famiglia di colonne da ignorare. |
bigtableChangeStreamIgnoreColumns |
(Facoltativo) Un elenco separato da virgole di modifiche dei nomi delle colonne da ignorare. |
bigtableChangeStreamName |
(Facoltativo) Un nome univoco per la pipeline client. Consente di riprendere l'elaborazione dal punto in cui una pipeline precedentemente in esecuzione è stata arrestata. Il valore predefinito è il nome generato automaticamente. Consulta i log dei job Dataflow per il valore utilizzato. |
bigtableChangeStreamResume |
(Facoltativo) Se impostato su true , l'elaborazione di una nuova pipeline riprende dal momento in cui è stata arrestata una pipeline in esecuzione in precedenza con lo stesso valore di bigtableChangeStreamName .
Se la pipeline con il valore bigtableChangeStreamName specificato non è mai stata eseguita, non viene avviata una nuova pipeline.
Se la norma è impostata su false , viene avviata una nuova pipeline. Se una pipeline con lo stesso valore bigtableChangeStreamName è già stata eseguita per l'origine specificata, non viene avviata una nuova pipeline. Il valore predefinito è false . |
bigQueryChangelogTableFieldsToIgnore |
(Facoltativo) Un elenco separato da virgole delle colonne del log delle modifiche che, se specificato, non sono state create e compilate. Utilizza uno dei seguenti valori supportati: is_gc , source_instance , source_cluster , source_table , tiebreaker o big_query_commit_timestamp . Per impostazione predefinita, vengono compilate tutte le colonne. |
bigQueryChangelogTablePartitionExpirationMs |
(Facoltativo) Imposta la scadenza in millisecondi della partizione della tabella del log delle modifiche. Se il criterio è impostato su true , le partizioni precedenti al numero di millisecondi specificato vengono eliminate. Per impostazione predefinita, non è impostata alcuna scadenza. |
bigQueryChangelogTablePartitionGranularity |
(Facoltativo) Specifica la granularità per il partizionamento della tabella del log delle modifiche. Se impostata, la tabella è partizionata. Utilizza uno dei seguenti valori supportati: HOUR , DAY , MONTH o YEAR . Per impostazione predefinita, la tabella non è partizionata. |
dlqDirectory |
(Facoltativo) La directory per la coda dei messaggi non recapitabili. I record che non vengono elaborati vengono archiviati in questa directory. Il valore predefinito è una directory sotto la posizione temporanea del job Dataflow. Nella maggior parte dei casi, puoi utilizzare il percorso predefinito. |
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, vedi Località Dataflow.
- Nel menu a discesa Modello Dataflow, seleziona the Bigtable change streams to BigQuery 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 \ --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 senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, come
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella padre con data all'interno del 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
: ID istanza Bigtable.BIGTABLE_TABLE_ID
: l'ID della tua tabella Bigtable.BIGTABLE_APPLICATION_PROFILE_ID
: ID del profilo dell'applicazione Bigtable.BIGQUERY_DESTINATION_DATASET
: 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 senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, come
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella padre con data all'interno del bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
BIGTABLE_INSTANCE_ID
: ID istanza Bigtable.BIGTABLE_TABLE_ID
: l'ID della tua tabella Bigtable.BIGTABLE_APPLICATION_PROFILE_ID
: ID del profilo dell'applicazione Bigtable.BIGQUERY_DESTINATION_DATASET
: nome del set di dati di destinazione BigQuery
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.