Modelo do Cloud Storage Avro para Spanner

O modelo de arquivos Avro do Cloud Storage para o Spanner é um pipeline em lote que lê arquivos Avro exportados do Spanner e armazenados em um banco de dados do Spanner.

Requisitos de pipeline

  • O banco de dados de destino do Spanner precisa existir e estar vazio.
  • É necessário ter permissões de leitura para o bucket do Cloud Storage e permissões de gravação para o banco de dados de destino do Spanner.
  • O caminho do Cloud Storage precisa existir e incluir um arquivo spanner-export.jsoncom uma descrição JSON dos arquivos a serem importados.
  • Se o arquivo Avro de origem não contiver uma chave primária, será necessário criar uma tabela vazia do Spanner com uma chave primária antes de executar o modelo. Esta etapa não será necessária se o arquivo Avro definir a chave primária.

Parâmetros do modelo

Parâmetros obrigatórios

  • instanceId: o ID da instância referente ao banco de dados do Spanner.
  • databaseId: o ID do banco de dados referente ao banco de dados do Spanner.
  • inputDir: o caminho do Cloud Storage de onde os arquivos Avro são importados.

Parâmetros opcionais

  • spannerHost: opcional: o endpoint do Cloud Spanner para chamar no modelo. Usado apenas para testes. Por exemplo: https://batch-spanner.googleapis.com. O padrão é: https://batch-spanner.googleapis.com.
  • waitForIndexes: se for true, o pipeline aguardará a criação dos índices. Se for false, o job poderá ser concluído enquanto os índices ainda estiverem sendo criados em segundo plano. O valor padrão é false.
  • waitForForeignKeys: se for true, o pipeline aguardará a criação das chaves externas. Se for false, o job poderá ser concluído enquanto chaves externas ainda estiverem sendo criadas em segundo plano. O valor padrão é false.
  • waitForChangeStreams: se for true, o pipeline aguardará a criação dos fluxos de alterações. Se for false, o job poderá ser concluído enquanto os fluxos de alterações ainda estiverem sendo criados em segundo plano. O valor padrão é true.
  • waitForSequences: por padrão, o pipeline de importação é bloqueado na criação da sequência. Se for false, o pipeline de importação poderá ser concluído com sequências ainda sendo criadas em segundo plano.
  • earlyIndexCreateFlag: especifica se a criação antecipada de índices está ativada. Se o modelo executa um grande número de instruções DDL, é mais eficiente criar índices antes de carregar os dados. Portanto, o comportamento padrão é criar os índices primeiro quando o número de instruções DDL exceder um limite. Para desativar o recurso, defina earlyIndexCreateFlag como false. O valor padrão é true.
  • spannerProjectId: o ID do projeto do Google Cloud que contém o banco de dados do Spanner. Se não for definido, o projeto padrão do Google Cloud será usado.
  • ddlCreationTimeoutInMinutes: o tempo limite, em minutos, das instruções DDL executadas pelo modelo. O valor padrão é 30 minutos.
  • spannerPriority: a prioridade de solicitação das chamadas do Spanner. Os valores possíveis são HIGH, MEDIUM e LOW. O valor padrão é MEDIUM.

Executar o modelo

Console

  1. Acesse a página Criar job usando um modelo do Dataflow.
  2. Acesse Criar job usando um modelo
  3. No campo Nome do job, insira um nome exclusivo.

    Para que o job apareça na página de Instâncias do Spanner do console do Google Cloud, o nome do job precisa corresponder ao seguinte formato:

    cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    Substitua:

    • SPANNER_INSTANCE_ID: o ID da instância do Spanner
    • SPANNER_DATABASE_NAME: o nome do banco de dados do Spanner
  4. Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é us-central1.

    Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.

  5. No menu suspenso Modelo do Dataflow, selecione the Avro Files on Cloud Storage to Cloud Spanner template.
  6. Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
  7. Cliquem em Executar job.

gcloud

No shell ou no terminal, execute o modelo:

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

Substitua:

  • JOB_NAME: um nome de job de sua escolha
  • VERSION: a versão do modelo que você quer usar

    Use estes valores:

  • REGION_NAME: a região em que você quer implantar o job do Dataflow, por exemplo, us-central1
  • INSTANCE_ID: o ID da instância do Spanner que contém o banco de dados.
  • DATABASE_ID: o ID do banco de dados do Spanner a ser importado
  • GCS_DIRECTORY: o caminho do Cloud Storage de onde os arquivos Avro são importados. Por exemplo, gs://mybucket/somefolder.

API

Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a API e os respectivos escopos de autorização, consulte 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"
   }
}

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud em que você quer executar o job do Dataflow
  • JOB_NAME: um nome de job de sua escolha
  • VERSION: a versão do modelo que você quer usar

    Use estes valores:

  • LOCATION: a região em que você quer implantar o job do Dataflow, por exemplo, us-central1
  • INSTANCE_ID: o ID da instância do Spanner que contém o banco de dados.
  • DATABASE_ID: o ID do banco de dados do Spanner a ser importado
  • GCS_DIRECTORY: o caminho do Cloud Storage de onde os arquivos Avro são importados. Por exemplo, gs://mybucket/somefolder.

A seguir