Il modello Spanner to BigQuery è una pipeline batch che legge i dati da una tabella Spanner e li scrive in BigQuery.
Requisiti della pipeline
- La tabella Spanner di origine deve esistere prima dell'esecuzione della pipeline.
- Il set di dati BigQuery deve esistere prima dell'esecuzione della pipeline.
- Un file JSON che descriva lo schema BigQuery.
Il file deve contenere un array JSON di primo livello denominato
fields
. I contenuti dell'arrayfields
devono utilizzare il seguente pattern:{"name": "COLUMN_NAME", "type": "DATA_TYPE"}
.Il seguente JSON descrive uno schema BigQuery di esempio:
{ "fields": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
Il modello batch di Spanner a BigQuery non supporta l'importazione dei dati nei campi
STRUCT
(Record) della tabella BigQuery di destinazione.
Parametri del modello
Parametri obbligatori
- spannerInstanceId : l'ID istanza del database Spanner da cui leggere.
- spannerDatabaseId : l'ID del database Spanner da esportare.
- outputTableSpec : la posizione della tabella di output BigQuery in cui scrivere l'output. Ad esempio,
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>
.A seconda delcreateDisposition
specificato, la tabella di output potrebbe essere creata automaticamente utilizzando lo schema Avro fornito dall'utente.
Parametri facoltativi
- spannerProjectId : l'ID del progetto in cui si trova il database Spanner. Il valore predefinito per questo parametro è il progetto in cui è in esecuzione la pipeline Dataflow.
- spannerTableId : il nome della tabella del database Spanner da esportare. Ignorato se sqlQuery è impostato.
- spannerRpcPriority : la priorità della richiesta (https://cloud.google.com/spanner/docs/reference/rest/v1/RequestOptions) per le chiamate Spanner. I valori possibili sono
HIGH
,MEDIUM
eLOW
. Il valore predefinito èHIGH
. - sqlQuery : la query SQL da utilizzare per leggere i dati dal database Spanner. Obbligatorio se spannerTableId è vuoto.
- bigQuerySchemaPath : il percorso Cloud Storage (gs://) del file JSON che definisce lo schema BigQuery. (ad esempio gs://your-bucket/your-schema.json).
- writeDisposition : il valore di BigQuery WriteDisposition (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Ad esempio,
WRITE_APPEND
,WRITE_EMPTY
oWRITE_TRUNCATE
. Il valore predefinito èWRITE_APPEND
. - createDisposition : il valore CreateDisposition di BigQuery (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Ad esempio,
CREATE_IF_NEEDED
eCREATE_NEVER
. Il valore predefinito èCREATE_IF_NEEDED
. - useStorageWriteApi : se
true
, la pipeline utilizza l'API BigQuery Storage di scrittura (https://cloud.google.com/bigquery/docs/write-api). Il valore predefinito èfalse
. Per ulteriori informazioni, consulta Utilizzo dell'API Storage Write (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce : quando utilizzi l'API Storage Write, specifica la semantica di scrittura. Per utilizzare la semantica almeno una volta (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), imposta questo parametro su
true
. Per utilizzare la semantica esattamente una volta, imposta il parametro sufalse
. Questo parametro si applica solo quandouseStorageWriteApi
ètrue
. Il valore predefinito èfalse
.
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 di flusso di dati, seleziona the Spanner 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 \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabaseId=SPANNER_DATABASE_ID,\ spannerTableId=SPANNER_TABLE_ID,\ sqlQuery=SQL_QUERY,\ outputTableSpec=OUTPUT_TABLE_SPEC,\
Sostituisci quanto segue:
JOB_NAME
: un nome di 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 principale senza 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 si trova nidificata nella rispettiva cartella principale datata 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
: l'ID istanza SpannerSPANNER_DATABASE_ID
: l'ID database SpannerSPANNER_TABLE_ID
: il nome della tabella SpannerSQL_QUERY
: la query SQLOUTPUT_TABLE_SPEC
: la posizione della tabella BigQuery
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 { "launchParameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabaseId": "SPANNER_DATABASE_ID", "spannerTableId": "SPANNER_TABLE_ID", "sqlQuery": "SQL_QUERY", "outputTableSpec": "OUTPUT_TABLE_SPEC", }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex", "environment": { "maxWorkers": "10" } } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome di 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 principale senza 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 si trova nidificata nella rispettiva cartella principale datata 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
: l'ID istanza SpannerSPANNER_DATABASE_ID
: l'ID database SpannerSPANNER_TABLE_ID
: il nome della tabella SpannerSQL_QUERY
: la query SQLOUTPUT_TABLE_SPEC
: la posizione della tabella BigQuery
Passaggi successivi
- Scopri di più sui modelli Dataflow.
- Consulta l'elenco dei modelli forniti da Google.