O modelo Spanner para ficheiros Avro no Cloud Storage é um pipeline em lote que exporta uma base de dados do Spanner completa para o Cloud Storage no formato Avro. A exportação de uma base de dados do Spanner cria uma pasta no contentor que selecionar. A pasta contém:
- Um ficheiro
spanner-export.json
. - Um ficheiro
TableName-manifest.json
para cada tabela na base de dados que exportou. - Um ou mais ficheiros
TableName.avro-#####-of-#####
.
Por exemplo, a exportação de uma base de dados com duas tabelas, Singers
e Albums
, cria o seguinte conjunto de ficheiros:
Albums-manifest.json
Albums.avro-00000-of-00002
Albums.avro-00001-of-00002
Singers-manifest.json
Singers.avro-00000-of-00003
Singers.avro-00001-of-00003
Singers.avro-00002-of-00003
spanner-export.json
Requisitos do pipeline
- A base de dados do Spanner tem de existir.
- O contentor do Cloud Storage de saída tem de existir.
- Além das funções de gestão de identidade e de acesso (IAM) necessárias para executar tarefas do Dataflow, também tem de ter as funções de IAM adequadas para ler os dados do Spanner e escrever no contentor do Cloud Storage.
Parâmetros de modelos
Parâmetros obrigatórios
- instanceId: o ID da instância da base de dados do Spanner que quer exportar.
- databaseId: o ID da base de dados do Spanner que quer exportar.
- outputDir: o caminho do Cloud Storage para o qual os ficheiros Avro são exportados. A tarefa de exportação cria um novo diretório neste caminho que contém os ficheiros exportados. Por exemplo,
gs://your-bucket/your-path
.
Parâmetros opcionais
- avroTempDirectory: o caminho do Cloud Storage onde os ficheiros Avro temporários são escritos.
- 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. - snapshotTime: a data/hora que corresponde à versão da base de dados do Spanner que quer ler. A data/hora tem de ser especificada através do
Zulu
formato RFC 3339 UTC. A data/hora tem de ser no passado e aplica-se a obsolescência máxima da data/hora. Por exemplo,1990-12-31T23:59:60Z
. A predefinição é vazio. - spannerProjectId: o ID do projeto do Google Cloud que contém a base de dados do Spanner a partir da qual quer ler dados.
- shouldExportTimestampAsLogicalType: se for
true
, as indicações de tempo são exportadas como um tipolong
com o tipo lógicotimestamp-micros
. Por predefinição, este parâmetro está definido comofalse
e as indicações de tempo são exportadas como strings ISO-8601 com precisão de nanosegundos. - tableNames: uma lista separada por vírgulas de tabelas que especifica o subconjunto da base de dados do Spanner a exportar. Se definir este parâmetro, tem de incluir todas as tabelas relacionadas (tabelas principais e tabelas referenciadas por chaves externas) ou definir o parâmetro
shouldExportRelatedTables
comotrue
.Se a tabela estiver num esquema com nome, use o nome totalmente qualificado. Por exemplo:sch1.foo
em quesch1
é o nome do esquema efoo
é o nome da tabela. A predefinição é vazio. - shouldExportRelatedTables: se devem ser incluídas tabelas relacionadas. Este parâmetro é usado em conjunto com o parâmetro
tableNames
. A predefinição é: false. - spannerPriority: a prioridade do pedido para chamadas do Spanner. Os valores possíveis são
HIGH
,MEDIUM
eLOW
. O valor predefinido éMEDIUM
. - dataBoostEnabled: definido como
true
para usar os recursos de computação do Spanner Data Boost para executar a tarefa com um impacto quase nulo nos fluxos de trabalho OLTP do Spanner. Quando está definida comotrue
, também precisa da autorização de IAMspanner.databases.useDataBoost
. Para mais informações, consulte a vista geral do Data Boost (https://cloud.google.com/spanner/docs/databoost/databoost-overview). A predefinição é: false.
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.
- 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 Cloud Spanner to Avro Files on Cloud Storage template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- Clique em Executar tarefa.
gcloud
Este exemplo usa o comando
gcloud dataflow jobs run
.
Na shell ou no terminal, execute o modelo:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Spanner_to_GCS_Avro \ --region REGION_NAME \ --staging-location GCS_STAGING_LOCATION \ --parameters 'instanceId=INSTANCE_ID,databaseId=DATABASE_ID,outputDir=GCS_DIRECTORY'
Substitua o seguinte:
JOB_NAME
: um nome de tarefa exclusivo à sua escolhaPara que a tarefa seja apresentada na parte do Spanner da Google Cloud consola, o nome da tarefa tem de corresponder ao formato
cloud-spanner--INSTANCE_ID-DATABASE_ID
.VERSION
: 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
GCS_STAGING_LOCATION
: o caminho para escrever ficheiros temporários; por exemplo,gs://mybucket/temp
INSTANCE_ID
: o ID da instância do SpannerDATABASE_ID
: o ID da sua base de dados do SpannerGCS_DIRECTORY
: o caminho do Cloud Storage para o qual os ficheiros Avro são importados
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/Cloud_Spanner_to_GCS_Avro { "jobName": "JOB_NAME", "parameters": { "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "outputDir": "gs://GCS_DIRECTORY" } }
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 escolhaPara que a tarefa seja apresentada na parte do Spanner da Google Cloud consola, o nome da tarefa tem de corresponder ao formato
cloud-spanner--INSTANCE_ID-DATABASE_ID
.VERSION
: 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
GCS_STAGING_LOCATION
: o caminho para escrever ficheiros temporários; por exemplo,gs://mybucket/temp
INSTANCE_ID
: o ID da instância do SpannerDATABASE_ID
: o ID da sua base de dados do SpannerGCS_DIRECTORY
: o caminho do Cloud Storage para o qual os ficheiros Avro são importados
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.