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 do banco de dados do Cloud Spanner em que você quer importar.
  • databaseId: o ID do banco de dados do Cloud Spanner em que você quer importar (deve existir).
  • inputDir: o caminho do Cloud Storage do qual os arquivos Avro precisam ser 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: por padrão, o pipeline de importação não é bloqueado na criação do índice e pode ser concluído com índices ainda sendo criados em segundo plano. Se verdadeiro, o pipeline aguardará a criação dos índices.
  • waitForForeignKeys: por padrão, o pipeline de importação não é bloqueado na criação de chaves externas e pode ser concluído com chaves estrangeiras ainda sendo criadas em segundo plano. Se verdadeiro, o pipeline aguardará a criação de chaves externas.
  • waitForChangeStreams: por padrão, o pipeline de importação é bloqueado na criação do fluxo de alterações. Se for definido como falso, ele pode ser concluído com fluxos de alterações ainda sendo criados em segundo plano.
  • waitForSequences: por padrão, o pipeline de importação é bloqueado na criação da sequência. Se for falso, ele poderá ser concluído com sequências ainda sendo criadas em segundo plano.
  • earlyIndexCreateFlag: sinalização para desativar a criação antecipada de índices no caso de muitos índices. Os índices e as chaves estrangeiras são criados após o carregamento de dados. Se houver mais de 40 instruções DDL a serem executadas após o carregamento de dados, é preferível criar os índices antes do carregamento. Essa é a sinalização para desativar o recurso. O padrão é: verdadeiro.
  • spannerProjectId: o ID do projeto da instância do Cloud Spanner.
  • ddlCreationTimeoutInMinutes: tempo limite da criação de DDL em minutos. O padrão é: 30.
  • spannerPriority: opcional: a prioridade da solicitação para chamadas do Cloud Spanner. O valor precisa ser um destes: [HIGH,MEDIUM,LOW].

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