Modello Avro Spanner to Cloud Storage

Il modello Spanner to Avro Files on Cloud Storage è una pipeline batch che esporta un intero database Spanner in Cloud Storage in formato Avro. L'esportazione di un database Spanner crea una cartella nel bucket che selezioni. La cartella contiene:

  • Un file spanner-export.json.
  • Un file TableName-manifest.json per ogni tabella del database che hai esportato.
  • Uno o più file TableName.avro-#####-of-#####.

Ad esempio, l'esportazione di un database con due tabelle, Singers e Albums, crea il seguente set di file:

  • Albums-manifest.json
  • Albums.avro-00000-of-00002
  • Albums.avro-00001-of-00002
  • Singers-manifest.json
  • Singers.avro-00000-of-00003
  • Singers.avro-00001-of-00003
  • Singers.avro-00002-of-00003
  • spanner-export.json

Requisiti della pipeline

  • Il database Spanner deve esistere.
  • Il bucket Cloud Storage di output deve esistere.
  • Oltre ai ruoli Identity and Access Management (IAM) necessari per eseguire i job Dataflow, devi disporre anche dei ruoli IAM appropriati per leggere i dati di Spanner e scrivere nel tuo bucket Cloud Storage.

Parametri del modello

Parametri obbligatori

  • instanceId: l'ID istanza del database Spanner che vuoi esportare.
  • databaseId: l'ID database del database Spanner che vuoi esportare.
  • outputDir: il percorso Cloud Storage in cui esportare i file Avro. Il job di esportazione crea una nuova directory in questo percorso che contiene i file esportati. Ad esempio, gs://your-bucket/your-path.

Parametri facoltativi

  • avroTempDirectory: il percorso Cloud Storage in cui vengono scritti i file Avro temporanei.
  • spannerHost: l'endpoint Cloud Spanner da chiamare nel modello. Utilizzato solo per i test. Ad esempio, https://batch-spanner.googleapis.com. Il valore predefinito è https://batch-spanner.googleapis.com.
  • snapshotTime: il timestamp corrispondente alla versione del database Spanner che vuoi leggere. Il timestamp deve essere specificato utilizzando il formato RFC 3339 UTC Zulu. Il timestamp deve essere nel passato e si applica la massima obsolescenza del timestamp. Ad esempio: 1990-12-31T23:59:60Z. Il valore predefinito è vuoto.
  • spannerProjectId: l'ID del progetto Google Cloud che contiene il database Spanner da cui vuoi leggere i dati.
  • shouldExportTimestampAsLogicalType: se true, i timestamp vengono esportati come tipo long con tipo logico timestamp-micros. Per impostazione predefinita, questo parametro è impostato su false e i timestamp vengono esportati come stringhe ISO-8601 con precisione al nanosecondo.
  • tableNames: un elenco di tabelle separate da virgole che specificano il sottoinsieme del database Spanner da esportare. Se imposti questo parametro, devi includere tutte le tabelle correlate (tabelle principali e tabelle a cui fa riferimento la chiave esterna) o impostare il parametro shouldExportRelatedTables su true.Se la tabella si trova nello schema denominato, utilizza il nome completo. Ad esempio: sch1.foo, in cui sch1 è il nome dello schema e foo è il nome della tabella. Il valore predefinito è vuoto.
  • shouldExportRelatedTables: indica se includere le tabelle correlate. Questo parametro viene utilizzato insieme al parametro tableNames. Il valore predefinito è false.
  • spannerPriority: la priorità della richiesta per le chiamate Spanner. I valori possibili sono HIGH, MEDIUM e LOW. Il valore predefinito è MEDIUM.
  • dataBoostEnabled: impostalo su true per utilizzare le risorse di computing di Spanner Data Boost per eseguire il job con un impatto quasi nullo sui workflow Spanner OLTP. Se impostato su true, è necessaria anche l'autorizzazione IAM spanner.databases.useDataBoost. Per saperne di più, consulta la panoramica di Data Boost (https://cloud.google.com/spanner/docs/databoost/databoost-overview). Il valore predefinito è false.
  • checksumAlgorithm: l'algoritmo di checksum da utilizzare per i file esportati. I valori possibili sono MD5 e CRC32C. Il valore predefinito è MD5.

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 delle regioni in cui puoi eseguire un job Dataflow, consulta Località di Dataflow.

  5. Nel menu a discesa Modello Dataflow, seleziona il modello Cloud Spanner in file Avro su Cloud Storage.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  7. Fai clic su Esegui job.

gcloud

Questo esempio utilizza il comando gcloud dataflow jobs run.

Nella shell o nel terminale, esegui il modello:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/ \
    --region REGION_NAME \
    --staging-location GCS_STAGING_LOCATION \
    --parameters 'instanceId=INSTANCE_ID,databaseId=DATABASE_ID,outputDir=GCS_DIRECTORY'

Sostituisci quanto segue:

  • JOB_NAME: un nome univoco del job a tua scelta

    Affinché il job venga visualizzato nella sezione Spanner della console Google Cloud , il nome del job deve corrispondere al formato cloud-spanner--INSTANCE_ID-DATABASE_ID.

  • 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
  • GCS_STAGING_LOCATION: il percorso per la scrittura dei file temporanei; ad esempio, gs://mybucket/temp
  • INSTANCE_ID: l'ID istanza Spanner
  • DATABASE_ID: l'ID del tuo database Spanner
  • GCS_DIRECTORY: il percorso Cloud Storage in cui i file Avro vengono importati da

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per saperne di più 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/
{
   "jobName": "JOB_NAME",
   "parameters": {
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "outputDir": "gs://GCS_DIRECTORY"
   }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto Google Cloud in cui vuoi eseguire il job Dataflow
  • JOB_NAME: un nome univoco del job a tua scelta

    Affinché il job venga visualizzato nella sezione Spanner della console Google Cloud , il nome del job deve corrispondere al formato cloud-spanner--INSTANCE_ID-DATABASE_ID.

  • 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
  • GCS_STAGING_LOCATION: il percorso per la scrittura dei file temporanei; ad esempio, gs://mybucket/temp
  • INSTANCE_ID: l'ID istanza Spanner
  • DATABASE_ID: l'ID del tuo database Spanner
  • GCS_DIRECTORY: il percorso Cloud Storage in cui i file Avro vengono importati da

Passaggi successivi