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 do Spanner.
  • inputDir: o caminho do Cloud Storage de onde os arquivos Avro são importados.

Parâmetros opcionais

  • spannerHost: 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 fluxo 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 na nuvem 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.
  • earlyIndexCreateThreshold: o limite para o número de índices e chaves estrangeiras que determina se os índices serão criados antes do carregamento de dados. Se o número total de índices e chaves externas for maior que esse limite, eles serão criados antes da importação de dados para melhorar o desempenho. O valor padrão é 40.

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 Google Cloud console, 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 o modelo Arquivos Avro no Cloud Storage para o Cloud Spanner.
  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/ \
    --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/
{
   "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 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