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. Sefalse
, 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. Sefalse
, 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. Sefalse
, 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
comofalse
. 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
eLOW
. 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
- Aceda à página do fluxo de dados Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- 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 SpannerSPANNER_DATABASE_NAME
: o nome da base de dados do Spanner
- 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.
- No menu pendente Modelo do fluxo de dados, selecione the Avro Files on Cloud Storage to Cloud Spanner template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- 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 escolhaVERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
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 dadosDATABASE_ID
: o ID da base de dados do Spanner para a qual importarGCS_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 CloudJOB_NAME
: um nome de tarefa exclusivo à sua escolhaVERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
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 dadosDATABASE_ID
: o ID da base de dados do Spanner para a qual importarGCS_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?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.