Modelo do Cloud Storage Avro para o Spanner

O modelo de ficheiros Avro do Cloud Storage para o Spanner é um pipeline em lote que lê ficheiros Avro exportados do Spanner armazenados no Cloud Storage e importa-os para uma base de dados do Spanner.

Requisitos do pipeline

  • A base de dados do Spanner de destino tem de existir e estar vazia.
  • Tem de ter autorizações de leitura para o contentor do Cloud Storage e autorizações de escrita para a base de dados do Spanner de destino.
  • O caminho do Cloud Storage de entrada tem de existir e incluir um spanner-export.json ficheiro que contenha uma descrição JSON dos ficheiros a importar.
  • Se o ficheiro Avro de origem não contiver uma chave primária, tem de criar uma tabela do Spanner vazia com uma chave primária antes de executar o modelo. Este passo não é obrigatório se o ficheiro Avro definir a chave principal.

Parâmetros de modelos

Parâmetros obrigatórios

  • instanceId: o ID da instância da base de dados do Spanner.
  • databaseId: o ID da base de dados do Spanner.
  • inputDir: o caminho do Cloud Storage a partir do qual os ficheiros Avro são importados.

Parâmetros opcionais

  • spannerHost: o ponto final do Cloud Spanner a chamar no modelo. Usado apenas para testes. Por exemplo, https://batch-spanner.googleapis.com. O valor predefinido é: https://batch-spanner.googleapis.com.
  • waitForIndexes: se true, o pipeline aguarda a criação de índices. Se false, o trabalho pode ser concluído enquanto os índices ainda estão a ser criados em segundo plano. O valor predefinido é false.
  • waitForForeignKeys: se for true, o pipeline aguarda a criação de chaves externas. Se false, o trabalho pode ser concluído enquanto as chaves externas ainda estão a ser criadas em segundo plano. O valor predefinido é false.
  • waitForChangeStreams: se true, o pipeline aguarda a criação de streams de alterações. Se false, a tarefa pode ser concluída enquanto as streams de alterações ainda estão a ser criadas em segundo plano. O valor predefinido é true.
  • waitForSequences: por predefinição, o pipeline de importação é bloqueado na criação de sequências. Se false, o pipeline de importação pode ser concluído com as sequências ainda a serem criadas em segundo plano.
  • earlyIndexCreateFlag: especifica se a criação de índice antecipada está ativada. Se o modelo executar um grande número de declarações DDL, é mais eficiente criar índices antes de carregar dados. Por conseguinte, o comportamento predefinido é criar primeiro os índices quando o número de declarações DDL excede um limite. Para desativar esta funcionalidade, defina earlyIndexCreateFlag como false. O valor predefinido é true.
  • spannerProjectId: o ID do projeto do Google Cloud que contém a base de dados do Spanner. Se não for definido, é usado o projeto do Google Cloud predefinido.
  • ddlCreationTimeoutInMinutes: o limite de tempo em minutos para declarações DDL realizadas pelo modelo. O valor predefinido é de 30 minutos.
  • spannerPriority: a prioridade do pedido para chamadas do Spanner. Os valores possíveis são HIGH, MEDIUM e LOW. O valor predefinido é MEDIUM.
  • earlyIndexCreateThreshold: o limite para o número de índices e chaves externas que determina se os índices devem ser criados antes do carregamento de dados. Se o número total de índices e chaves externas for superior a este limite, são criados antes da importação de dados para um melhor desempenho. O valor predefinido é 40.

Execute o modelo

Consola

  1. Aceda à página do fluxo de dados Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.

    Para que a tarefa seja apresentada na página Instances do Google Cloud console, o nome da tarefa tem de corresponder ao seguinte formato:

    cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    Substitua o seguinte:

    • SPANNER_INSTANCE_ID: o ID da sua instância do Spanner
    • SPANNER_DATABASE_NAME: o nome da base de dados do Spanner
  4. Opcional: para Ponto final regional, selecione um valor no menu pendente. A região predefinida é us-central1.

    Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.

  5. No menu pendente Modelo do fluxo de dados, selecione the Avro Files on Cloud Storage to Cloud Spanner template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. Clique em Executar tarefa.

gcloud

Na 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 o seguinte:

  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • INSTANCE_ID: o ID da instância do Spanner que contém a base de dados
  • DATABASE_ID: o ID da base de dados do Spanner para a qual importar
  • GCS_DIRECTORY: o caminho do Cloud Storage a partir do qual os ficheiros Avro são importados, por exemplo, gs://mybucket/somefolder

API

Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos 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 o seguinte:

  • PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google Cloud
  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • INSTANCE_ID: o ID da instância do Spanner que contém a base de dados
  • DATABASE_ID: o ID da base de dados do Spanner para a qual importar
  • GCS_DIRECTORY: o caminho do Cloud Storage a partir do qual os ficheiros Avro são importados, por exemplo, gs://mybucket/somefolder

O que se segue?