O modelo do Spanner para arquivos Avro no Cloud Storage é um pipeline em lote que exporta todo o banco de dados do Spanner para o Cloud Storage no formato Avro. A exportação de um banco de dados do Spanner cria uma pasta no bucket selecionado. A pasta contém:
- Um arquivo
spanner-export.json
. - Um arquivo
TableName-manifest.json
para cada tabela do banco de dados exportado - Um ou mais arquivos
TableName.avro-#####-of-#####
.
Por exemplo, a exportação de um banco de dados com duas tabelas, Singers
e Albums
, gera o seguinte conjunto de arquivos:
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 de pipeline
- O banco de dados do Spanner precisa existir.
- O bucket de saída do Cloud Storage precisa existir.
- Além dos papéis de gerenciamento de identidade e acesso (IAM, na sigla em inglês) necessários para executar jobs do Dataflow, é preciso ter os papéis do IAM apropriados para ler e gravar dados do Spanner no bucket do Cloud Storage.
Parâmetros do modelo
Parâmetros obrigatórios
- instanceId: o código da instância referente ao banco de dados do Spanner que você quer exportar.
- databaseId: o código do banco de dados referente ao banco de dados do Spanner que você quer exportar.
- outputDir: o caminho do Cloud Storage para onde os arquivos Avro serão exportados. O job de exportação cria um novo diretório nesse caminho contendo os arquivos exportados. (Exemplo: gs://your-bucket/your-path).
Parâmetros opcionais
- avroTempDirectory: o caminho do Cloud Storage em que os arquivos Avro temporários são gravados.
- 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.
- snapshotTime: o carimbo de data/hora que corresponde à versão do banco de dados do Spanner que você quer ler. O carimbo de data/hora precisa ser especificado no formato UTC
Zulu
RFC 3339. O carimbo de data/hora precisa estar no passado, e a Inatividade máxima do carimbo de data/hora se aplica. (Exemplo: 1990-12-31T23:59:60Z). O padrão é vazio. - spannerProjectId: o ID do projeto do Google Cloud que contém o banco de dados do Spanner de que você quer ler os dados.
- shouldExportTimestampAsLogicalType: se verdadeiro, os carimbos de data/hora são exportados como um tipo
long
com tipo lógicotimestamp-micros
. Por padrão, esse parâmetro é definido comofalse
, e os carimbos de data/hora são exportados como strings ISO-8601 com precisão de nanossegundos. - tableNames: uma lista de tabelas separada por vírgulas que especifica o subconjunto do banco de dados do Spanner a ser exportado. Se você definir esse parâmetro, precisará incluir todas as tabelas relacionadas (tabelas mãe e tabelas referenciadas de chave externa) ou definir o parâmetro
shouldExportRelatedTables
comotrue
.Se a tabela estiver em um esquema nomeado, use um nome totalmente qualificado. Por exemplo:sch1.foo
, em quesch1
é o nome do esquema efoo
é o nome da tabela. O padrão é vazio. - shouldExportRelatedTables: se quer incluir tabelas relacionadas. Esse parâmetro é usado com o parâmetro
tableNames
. O padrão é: falso. - spannerPriority: a prioridade de solicitação das chamadas do Spanner. Os valores possíveis são
HIGH
,MEDIUM
eLOW
. O valor padrão éMEDIUM
. - dataBoostEnabled : defina como
true
para usar os recursos de computação do Spanner Data Boost para executar o job com impacto quase zero nos fluxos de trabalho OLTP do Spanner. Quando definido comotrue
, você também precisa da permissãospanner.databases.useDataBoost
do IAM. Para mais informações, acesse a visão geral do Data Boost (https://cloud.google.com/spanner/docs/databoost/databoost-overview). O padrão é: falso.
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-export-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 Cloud Spanner to Avro Files on Cloud Storage 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/Cloud_Spanner_to_GCS_Avro \ --region REGION_NAME \ --staging-location GCS_STAGING_LOCATION \ --parameters \ instanceId=INSTANCE_ID,\ databaseId=DATABASE_ID,\ outputDir=GCS_DIRECTORY
Substitua:
JOB_NAME
: um nome de job de sua escolhaPara que o job seja exibido na parte do Spanner no Console do Google Cloud, o nome dele precisa corresponder ao formato
cloud-spanner-export-INSTANCE_ID-DATABASE_ID
.VERSION
: 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
GCS_STAGING_LOCATION
: o caminho para gravar arquivos temporários (por exemplo,gs://mybucket/temp
)INSTANCE_ID
: o ID da instância do SpannerDATABASE_ID
: o ID do banco de dados do SpannerGCS_DIRECTORY
: o caminho do Cloud Storage em que os arquivos Avro são exportados para
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/Cloud_Spanner_to_GCS_Avro { "jobName": "JOB_NAME", "parameters": { "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "outputDir": "gs://GCS_DIRECTORY" } }
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 escolhaPara que o job seja exibido na parte do Spanner no Console do Google Cloud, o nome dele precisa corresponder ao formato
cloud-spanner-export-INSTANCE_ID-DATABASE_ID
.VERSION
: 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
GCS_STAGING_LOCATION
: o caminho para gravar arquivos temporários (por exemplo,gs://mybucket/temp
)INSTANCE_ID
: o ID da instância do SpannerDATABASE_ID
: o ID do banco de dados do SpannerGCS_DIRECTORY
: o caminho do Cloud Storage em que os arquivos Avro são exportados para
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.