Modello Avro a Spanner di Cloud Storage

Il modello di file Avro di Cloud Storage in Spanner è una pipeline batch che legge Avro i file esportati da Spanner archiviati in Cloud Storage e li importa in un database Spanner.

Requisiti della pipeline

  • Il database Spanner di destinazione deve esistere e deve essere vuoto.
  • Devi disporre delle autorizzazioni di lettura per il bucket Cloud Storage e di quelle di scrittura per il database Spanner di destinazione.
  • Il percorso Cloud Storage di input deve esistere e deve includere un file spanner-export.json contenente una descrizione JSON dei file da importare.
  • Se il file Avro di origine non contiene una chiave primaria, devi creare una tabella Spanner vuota con una chiave primaria prima di eseguire il modello. Questo passaggio non è necessario se il file Avro definisce la chiave primaria.

Parametri del modello

Parametri obbligatori

  • instanceId: l'ID istanza del database Spanner.
  • databaseId: l'ID del database Spanner.
  • inputDir : il percorso di Cloud Storage da cui vengono importati i file Avro.

Parametri facoltativi

  • spannerHost: l'endpoint Cloud Spanner da chiamare nel modello. Utilizzato solo per i test. Esempio: https://batch-spanner.googleapis.com. Valore predefinito: https://batch-spanner.googleapis.com.
  • waitForIndexes : se true, la pipeline attende la creazione degli indici. Se false, il job potrebbe essere completato mentre gli indici sono ancora in fase di creazione in background. Il valore predefinito è false.
  • waitForForeignKeys: se true, la pipeline attende la creazione delle chiavi esterne. Se è false, il job potrebbe essere completato mentre le chiavi esterne vengono ancora create in background. Il valore predefinito è false.
  • waitForChangeStreams: se true, la pipeline attende la creazione dei flussi di modifiche. Se false, il job potrebbe essere completato mentre le modifiche in tempo reale sono ancora in fase di creazione in background. Il valore predefinito è true.
  • waitForSequences : per impostazione predefinita, la pipeline di importazione è bloccata al momento della creazione della sequenza. Se false, la pipeline di importazione potrebbe completarsi con sequenze ancora in fase di creazione in background.
  • earlyIndexCreateFlag : specifica se la creazione anticipata dell'indice è abilitata. Se il modello esegue un numero elevato di istruzioni DDL, è più efficiente creare gli indici prima di caricare i dati. Pertanto, il comportamento predefinito è creare prima gli indici quando il numero di istruzioni DDL supera una soglia. Per disattivare questa funzionalità, imposta earlyIndexCreateFlag su false. Il valore predefinito è true.
  • spannerProjectId : l'ID del progetto Google Cloud che contiene il database Spanner. Se non viene impostato, viene utilizzato il progetto Google Cloud predefinito.
  • ddlCreationTimeoutInMinutes: il timeout in minuti per le istruzioni DDL eseguite dal modello. Il valore predefinito è 30 minuti.
  • spannerPriority : la priorità delle richieste per le chiamate Spanner. I valori possibili sono HIGH, MEDIUM e LOW. Il valore predefinito è MEDIUM.

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.

    Affinché il job venga visualizzato in Spanner nella pagina Istanze Console Google Cloud, il nome del job deve avere il seguente formato:

    cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    Sostituisci quanto segue:

    • SPANNER_INSTANCE_ID: lo stato della tua istanza Spanner ID
    • SPANNER_DATABASE_NAME: il nome del database Spanner
  4. (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. Il valore predefinito è us-central1.

    Per un elenco di regioni in cui è possibile eseguire un job Dataflow, consulta Località di Dataflow.

  5. Nel menu a discesa Modello di flusso di dati, seleziona the Avro Files on Cloud Storage to Cloud Spanner 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 jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_Avro_to_Cloud_Spanner \
    --region REGION_NAME \
    --staging-location GCS_STAGING_LOCATION \
    --parameters \
instanceId=INSTANCE_ID,\
databaseId=DATABASE_ID,\
inputDir=GCS_DIRECTORY

Sostituisci quanto segue:

  • JOB_NAME: un nome job univoco di tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • REGION_NAME: la regione in cui vuoi di eseguire il deployment del job Dataflow, ad esempio us-central1
  • INSTANCE_ID: l'ID dell'istanza Spanner che contiene il database
  • DATABASE_ID: l'ID del database Spanner in cui eseguire l'importazione
  • GCS_DIRECTORY: il percorso Cloud Storage da cui vengono importati i file Avro, ad esempio gs://mybucket/somefolder

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/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/GCS_Avro_to_Cloud_Spanner
{
   "jobName": "JOB_NAME",
   "parameters": {
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "inputDir": "gs://GCS_DIRECTORY"
   },
   "environment": {
       "machineType": "n1-standard-2"
   }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud in cui vuoi eseguire il job Dataflow
  • JOB_NAME: un nome job univoco di tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • LOCATION: la regione in cui vuoi di eseguire il deployment del job Dataflow, ad esempio us-central1
  • INSTANCE_ID: l'ID dell'istanza Spanner che contiene il database
  • DATABASE_ID: l'ID del database Spanner in cui eseguire l'importazione
  • GCS_DIRECTORY: il percorso Cloud Storage da cui vengono importati i file Avro, ad esempio gs://mybucket/somefolder

Passaggi successivi