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.json
com 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 referente ao banco de dados do Spanner.
- inputDir: o caminho do Cloud Storage de onde os arquivos Avro são 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: se for
true
, o pipeline aguardará a criação dos índices. Se forfalse
, 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 forfalse
, 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 fluxos de alterações. Se forfalse
, 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
comofalse
. O valor padrão étrue
. - spannerProjectId: o ID do projeto 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
eLOW
. O valor padrão éMEDIUM
.
Executar o modelo
Console
- Acesse a página Criar job usando um modelo do Dataflow. Acesse Criar job usando um modelo
- 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 SpannerSPANNER_DATABASE_NAME
: o nome do banco de dados do Spanner
- 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.
- No menu suspenso Modelo do Dataflow, selecione the Avro Files on Cloud Storage to Cloud Spanner template.
- Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
- 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 escolhaVERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: 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 respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
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 importadoGCS_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 DataflowJOB_NAME
: um nome de job de sua escolhaVERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: 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 respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
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 importadoGCS_DIRECTORY
: o caminho do Cloud Storage de onde os arquivos Avro são importados. Por exemplo,gs://mybucket/somefolder
.
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.