Modello Avro di Cloud Storage a Spanner

Il modello File Avro di Cloud Storage in Spanner è una pipeline batch che legge i file Avro 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 delle autorizzazioni 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 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. Ad 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 vengono ancora creati 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 modifiche in tempo reale. Se è false, il job potrebbe essere completato mentre modifiche in tempo reale vengono ancora creati 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 essere completata 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à della richiesta 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 nella pagina Istanze di Spanner della console Google Cloud , il nome del job deve corrispondere al seguente formato:

    cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    Sostituisci quanto segue:

    • SPANNER_INSTANCE_ID: ID della tua istanza Spanner
    • SPANNER_DATABASE_NAME: il nome del database Spanner
  4. (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.

  5. Nel menu a discesa Modello di flusso di dati, seleziona the Avro Files on Cloud Storage to Cloud Spanner template.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  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 di job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • REGION_NAME: la regione in cui vuoi 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 di 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 progetto Google Cloud in cui vuoi eseguire il job Dataflow
  • JOB_NAME: un nome di job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • LOCATION: la regione in cui vuoi 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 di Cloud Storage da cui vengono importati i file Avro, ad esempio gs://mybucket/somefolder

Passaggi successivi