Modello da Spanner a BigQuery

Il modello da Spanner a 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 descrive lo schema BigQuery.

    Il file deve contenere un array JSON di primo livello denominato fields. I contenuti dell'array fields 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 da Spanner a BigQuery non supporta l'importazione di 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.
  • spannerTableId : il nome della tabella del database Spanner da esportare.
  • sqlQuery : la query SQL da utilizzare per leggere i dati dal database Spanner.
  • outputTableSpec : la posizione della tabella di output BigQuery in cui scrivere l'output. Ad esempio, <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>.In base al valore createDisposition specificato, la tabella di output potrebbe essere creata automaticamente utilizzando lo schema Avro fornito dall'utente.

Parametri facoltativi

Esegui il modello

Console

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome univoco per il job.
  4. (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.

  5. Dal menu a discesa Modello Dataflow, seleziona the Spanner to BigQuery template.
  6. Inserisci i valori parametro negli appositi campi.
  7. 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 job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi 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 esempio us-central1
  • SPANNER_INSTANCE_ID: l'ID istanza Spanner
  • SPANNER_DATABASE_ID: l'ID database Spanner
  • SPANNER_TABLE_ID: il nome della tabella Spanner
  • SQL_QUERY: la query SQL
  • OUTPUT_TABLE_SPEC: la posizione della tabella 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
{
   "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 Dataflow
  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi 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 esempio us-central1
  • SPANNER_INSTANCE_ID: l'ID istanza Spanner
  • SPANNER_DATABASE_ID: l'ID database Spanner
  • SPANNER_TABLE_ID: il nome della tabella Spanner
  • SQL_QUERY: la query SQL
  • OUTPUT_TABLE_SPEC: la posizione della tabella BigQuery

Passaggi successivi