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âmetro Descrição
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.
spannerProjectId Opcional: o ID do projeto do Google Cloud do banco de dados do Spanner. Se não for definido, o projeto padrão do Google Cloud será usado.
spannerPriority Opcional: a prioridade de solicitação das chamadas do Spanner. Estes são os valores possíveis: HIGH, MEDIUM e LOW. O valor padrão é MEDIUM.
ddlCreationTimeoutInMinutes Opcional: o tempo limite, em minutos, das instruções DDL executadas pelo modelo. O valor padrão é 30 minutos.
earlyIndexCreateFlag Opcional: especifica se a criação antecipada do índice precisa ser 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. Padrão: true.
waitForChangeStreams Opcional: 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. Padrão: true.
waitForForeignKeys Opcional: 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. Padrão: false.
waitForIndexes Opcional: 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. Padrão: false.

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