Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta página fornece uma visão geral das ferramentas e abordagens para exportar dados e configuração do workspace do Azure Databricks. Você pode exportar ativos de workspace para requisitos de conformidade, portabilidade de dados, finalidades de backup ou migração de workspace.
Visão geral
Os workspaces do Azure Databricks contêm uma variedade de ativos, incluindo configuração de workspace, tabelas gerenciadas, objetos de IA e ML e dados armazenados no armazenamento em nuvem. Quando você precisa exportar dados de workspace, pode usar uma combinação de ferramentas internas e APIs para extrair esses ativos sistematicamente.
Os motivos comuns para exportar dados do workspace incluem:
- Requisitos de conformidade: atender às obrigações de portabilidade de dados de acordo com regulamentos como GDPR e CCPA.
- Backup e recuperação de desastres: criação de cópias de ativos críticos do ambiente de trabalho para a continuidade dos negócios.
- Migração de espaços de trabalho: Movendo ativos entre espaços de trabalho ou provedores de nuvem.
- Auditoria e arquivamento: preservando registros históricos de configuração de espaço de trabalho e dados.
Planejar sua exportação
Antes de começar a exportar dados do workspace, crie um inventário dos ativos necessários para exportar e entender as dependências entre eles.
Compreender os ativos do espaço de trabalho
Seu workspace do Azure Databricks contém várias categorias de ativos que você pode exportar:
- Configuração do workspace: Notebooks, pastas, repositórios, segredos, usuários, grupos, ACLs (listas de controle de acesso), configurações de cluster e definições de trabalho.
- Ativos de dados: tabelas gerenciadas, bancos de dados, arquivos do Sistema de Arquivos do Databricks e dados armazenados no armazenamento em nuvem.
- Recursos de computação: configurações de cluster, políticas e definições de pool de instâncias.
- Ativos de IA e ML: experimentos do MLflow, execuções, modelos, tabelas do Feature Store, índices de Pesquisa Vetorial e modelos do Unity Catalog.
- Objetos do Catálogo do Unity: configuração do Metastore, catálogos, esquemas, tabelas, volumes e permissões.
Defina o escopo da sua exportação
Crie uma lista de verificação de ativos para exportar com base em seus requisitos. Considere estas perguntas:
- Você precisa exportar todos os ativos ou apenas categorias específicas?
- Há requisitos de conformidade ou segurança que determinam quais ativos você deve exportar?
- Você precisa preservar relações entre ativos (por exemplo, trabalhos que fazem referência a notebooks)?
- Você precisa recriar a configuração do workspace em outro ambiente?
Planejar seu escopo de exportação ajuda você a escolher as ferramentas certas e evitar dependências críticas ausentes.
Exportar configuração do workspace
O exportador do Terraform é a principal ferramenta para exportar a configuração do workspace. Ele gera arquivos de configuração do Terraform que representam seus ativos de workspace como código.
Usar exportador do Terraform
O exportador terraform é integrado ao provedor Terraform do Azure Databricks e gera arquivos de configuração do Terraform para recursos de workspace, incluindo notebooks, trabalhos, clusters, usuários, grupos, segredos e listas de controle de acesso. O exportador deve ser executado separadamente para cada workspace. Consulte o Databricks Terraform provider.
Pré-requisitos:
- Terraform instalado em seu computador
- Autenticação do Azure Databricks configurada
- Privilégios de administrador no workspace que você deseja exportar
Para exportar recursos do espaço de trabalho:
Examine o vídeo de uso de exemplo para obter um passo a passo do exportador.
Baixe e instale o provedor Terraform com a ferramenta exportadora:
wget -q -O terraform-provider-databricks.zip $(curl -s https://api.github.com/repos/databricks/terraform-provider-databricks/releases/latest|grep browser_download_url|grep linux_amd64|sed -e 's|.*: "\([^"]*\)".*$|\1|') unzip -d terraform-provider-databricks terraform-provider-databricks.zipConfigure variáveis de ambiente de autenticação para seu workspace:
export DATABRICKS_HOST=https://your-workspace-url export DATABRICKS_TOKEN=your-tokenExecute o exportador para gerar arquivos de configuração do Terraform:
terraform-provider-databricks exporter \ -directory ./exported-workspace \ -listing notebooks,jobs,clusters,users,groups,secretsOpções comuns do exportador:
-
-listing: especifique os tipos de recursos a serem exportados (separados por vírgulas) -
-services: alternativa à listagem para filtrar recursos -
-directory: diretório de saída para arquivos gerados.tf -
-incremental: executar no modo incremental para migrações em etapas
-
Examine os arquivos gerados
.tfno diretório de saída. O exportador cria um arquivo para cada tipo de recurso.
Observação
O exportador do Terraform concentra-se na configuração e nos metadados do workspace. Ele não exporta os dados reais armazenados em tabelas ou no Sistema de Arquivos do Databricks. Você deve exportar dados separadamente usando as abordagens descritas nas seções a seguir.
Exportar tipos de ativos específicos
Para ativos não totalmente cobertos pelo exportador do Terraform, use estes métodos:
- Notebooks: baixe os notebooks individualmente da interface do workspace ou use a API do Workspace para exportar notebooks de forma programática. Consulte Gerenciar objetos de workspace.
- Segredos: os segredos não podem ser exportados diretamente por motivos de segurança. Você deve recriar manualmente os segredos no ambiente de destino. Documentar nomes de segredos e escopos para referência.
- Objetos MLflow: Use a ferramenta mlflow-export-import para exportar experimentos, execuções e modelos. Consulte a seção de ativos de ML abaixo.
Exportar dados
Os dados do cliente normalmente residem no armazenamento da conta de nuvem, não no Azure Databricks. Você não precisa exportar dados que já estão no armazenamento em nuvem. No entanto, você precisa exportar dados armazenados em locais gerenciados pelo Azure Databricks.
Exportar tabelas gerenciadas
Embora as tabelas gerenciadas estejam ativas no armazenamento em nuvem, elas são armazenadas em uma hierarquia baseada em UUID que pode ser difícil de analisar. Você pode usar o DEEP CLONE comando para reescrever tabelas gerenciadas como tabelas externas em um local especificado, tornando-as mais fáceis de trabalhar.
Comandos de exemplo DEEP CLONE :
CREATE TABLE delta.`abfss://container@storage.dfs.core.windows.net/path/to/storage/`
DEEP CLONE my_catalog.my_schema.my_table
Para obter um script completo para clonar todas as tabelas em uma lista de catálogos, consulte o script de exemplo abaixo.
Exportar armazenamento padrão do Databricks
Para workspaces sem servidor, o Azure Databricks oferece armazenamento padrão, que é uma solução de armazenamento totalmente gerenciada dentro da conta do Azure Databricks. Os dados no armazenamento padrão devem ser exportados para contêineres de armazenamento de propriedade do cliente antes da exclusão ou desativação do workspace. Para obter mais informações sobre workspaces sem servidor, consulte Criar um workspace sem servidor.
Para tabelas no armazenamento padrão, use DEEP CLONE para gravar dados em um contêiner de armazenamento de propriedade do cliente. Para volumes e arquivos arbitrários, siga os mesmos padrões descritos na seção de exportação raiz do DBFS abaixo.
Exportar raiz do Sistema de Arquivos do Databricks
A raiz do Sistema de Arquivos do Databricks é o local de armazenamento herdado em sua conta de armazenamento do workspace que pode conter ativos de propriedade do cliente, uploads de usuário, scripts de inicialização, bibliotecas e tabelas. Embora o sistema de arquivos raiz do Databricks seja um padrão de armazenamento preterido, os workspaces legados ainda podem ter dados armazenados nesse local que precisam ser exportados. Para obter mais informações sobre a arquitetura de armazenamento do espaço de trabalho, consulte Armazenamento do Espaço de Trabalho.
Exportar a raiz do Sistema de Arquivos do Databricks:
Como os buckets raiz no Azure são privados, você não pode usar ferramentas nativas do Azure como azcopy mover dados entre contas de armazenamento. Em vez disso, use dbutils fs cp e Delta DEEP CLONE no Azure Databricks. Isso pode levar muito tempo para ser executado, dependendo do volume de dados.
# Copy DBFS files to a local path
dbutils.fs.cp("dbfs:/path/to/remote/folder", "/path/to/local/folder", recurse=True)
Para tabelas no armazenamento raiz do Sistema de Arquivos do Databricks, use DEEP CLONE:
CREATE TABLE delta.`abfss://container@storage.dfs.core.windows.net/path/to/external/storage/`
DEEP CLONE delta.`dbfs:/path/to/dbfs/location`
Importante
Exportar grandes volumes de dados do armazenamento em nuvem pode incorrer em custos significativos de transferência e armazenamento de dados. Examine os preços do provedor de nuvem antes de iniciar grandes exportações.
Desafios comuns de exportação
Segredos:
Os segredos não podem ser exportados diretamente por motivos de segurança. Ao usar o exportador terraform com a opção -export-secrets , o exportador gera uma variável vars.tf com o mesmo nome do segredo. Você deve atualizar manualmente esse arquivo com os valores de segredo reais ou executar o exportador do Terraform com a opção -export-secrets (somente para segredos gerenciados pelo Azure Databricks).
O Azure Databricks recomenda o uso de um repositório secreto com suporte do Azure Key Vault.
Exportar ativos de IA e ML
Alguns ativos de IA e ML exigem diferentes ferramentas e abordagens para exportação. Os modelos do Unity Catalog são exportados como parte do exportador Terraform.
Objetos MLflow
O MLflow não é coberto pelo exportador do Terraform devido a lacunas na API e à dificuldade com a serialização. Para exportar experimentos, execuções, modelos e artefatos do MLflow, use a ferramenta mlflow-export-import . Essa ferramenta de software livre fornece cobertura semi-completa da migração do MLflow.
Para cenários somente exportação, você pode armazenar todos os ativos do MLflow em um bucket de propriedade do cliente sem precisar executar a etapa de importação. Para obter mais informações sobre o gerenciamento do MLflow, consulte Gerenciar o ciclo de vida do modelo no Catálogo do Unity.
Repositório de Recursos e Pesquisa de Vetores
Índices de Pesquisa de Vetor: os índices de Pesquisa de Vetor não estão no escopo dos procedimentos de exportação de dados da UE. Se você ainda quiser exportá-las, elas deverão ser gravadas em uma tabela padrão e exportadas usando DEEP CLONE.
Tabelas do Repositório de Recursos: o Repositório de Recursos deve ser tratado de forma semelhante aos índices de Pesquisa de Vetor. Usando o SQL, selecione dados relevantes e escreva-os em uma tabela padrão e exporte usando DEEP CLONE.
Validar dados exportados
Depois de exportar dados do workspace, valide se trabalhos, usuários, notebooks e outros recursos foram exportados corretamente antes de desativar o ambiente antigo. Use a lista de verificação criada durante a fase de escopo e planejamento para verificar se tudo o que você esperava exportar foi exportado com êxito.
Lista de verificação
Use esta lista de verificação para verificar sua exportação:
- Arquivos de configuração gerados: os arquivos de configuração do Terraform são criados para todos os recursos de workspace necessários.
- Notebooks exportados: todos os notebooks são exportados com seu conteúdo e metadados intactos.
- Tabelas clonadas: as tabelas gerenciadas são clonadas com êxito no local de exportação.
- Arquivos de dados copiados: os dados de armazenamento em nuvem são copiados completamente sem erros.
- Objetos MLflow exportados: Experimentos, Execuções e Modelos são exportados juntamente com seus artefatos.
- Permissões documentadas: listas de controle de acesso e permissões são capturadas na configuração do Terraform.
- Dependências identificadas: as relações entre ativos (por exemplo, trabalhos que fazem referência a notebooks) são preservadas na exportação.
Práticas recomendadas pós-exportação
Os testes de validação e aceitação são amplamente orientados por seus requisitos e podem variar amplamente. No entanto, essas práticas recomendadas gerais se aplicam:
- Definir um testbed: crie um testbed de trabalhos ou de notebooks para validar que segredos, dados, montagens, conectores e outras dependências estão funcionando corretamente no ambiente exportado.
- Comece com ambientes de desenvolvimento: se você estiver implementando em etapas, comece com o ambiente de desenvolvimento e trabalhe até a produção. Isso apresenta problemas importantes mais cedo e evita impactos na produção.
- Aproveite as pastas do Git: quando possível, use pastas Git, pois elas residem em um repositório Git externo. Isso evita a exportação manual e garante que o código seja idêntico entre ambientes.
- Documente o processo de exportação: registre as ferramentas usadas, os comandos executados e os problemas encontrados.
- Proteger dados exportados: verifique se os dados exportados são armazenados com segurança com controles de acesso apropriados, especialmente se contiver informações confidenciais ou de identificação pessoal.
- Manter a conformidade: se estiver exportando para fins de conformidade, verifique se a exportação atende aos requisitos regulatórios e às políticas de retenção.
Exemplo de scripts e automação
Você pode automatizar as exportações de workspace usando scripts e trabalhos agendados.
Script de exportação do Clone Profundo
O script a seguir exporta tabelas gerenciadas do Catálogo do Unity usando DEEP CLONE. Esse código deve ser executado no workspace de origem para exportar um determinado catálogo para um bucket intermediário. Atualize as variáveis catalogs_to_copy e dest_bucket.
import pandas as pd
# define catalogs and destination bucket
catalogs_to_copy = ["my_catalog_name"]
dest_bucket = "<cloud-storage-path>://my-intermediate-bucket"
manifest_name = "manifest"
# initialize vars
system_info = sql("SELECT * FROM system.information_schema.tables")
copied_table_names = []
copied_table_types = []
copied_table_schemas = []
copied_table_catalogs = []
copied_table_locations = []
# loop through all catalogs to copy, then copy all non-system tables
# note: this would likely be parallelized using thread pooling in prod
for catalog in catalogs_to_copy:
filtered_tables = system_info.filter((system_info.table_catalog == catalog) & (system_info.table_schema != "information_schema"))
for table in filtered_tables.collect():
schema = table['table_schema']
table_name = table['table_name']
table_type = table['table_type']
print(f"Copying table {schema}.{table_name}...")
target_location = f"{dest_bucket}/{catalog}_{schema}_{table_name}"
sqlstring = f"CREATE TABLE delta.`{target_location}` DEEP CLONE {catalog}.{schema}.{table_name}"
sql(sqlstring)
# lists used to create manifest table DF
copied_table_names.append(table_name)
copied_table_types.append(table_type)
copied_table_schemas.append(schema)
copied_table_catalogs.append(catalog)
copied_table_locations.append(target_location)
# create the manifest as a df and write to a table in dr target
# this contains catalog, schema, table and location
manifest_df = pd.DataFrame({"catalog": copied_table_catalogs,
"schema": copied_table_schemas,
"table": copied_table_names,
"location": copied_table_locations,
"type": copied_table_types})
spark.createDataFrame(manifest_df).write.mode("overwrite").format("delta").save(f"{dest_bucket}/{manifest_name}")
display(manifest_df)
Considerações sobre automação
Ao automatizar exportações:
- Use trabalhos agendados: crie trabalhos do Azure Databricks que executam scripts de exportação em um agendamento regular.
- Monitorar trabalhos de exportação: configure alertas para notificá-lo se as exportações falharem ou demorarem mais do que o esperado.
- Gerenciar credenciais: armazene credenciais de armazenamento em nuvem e tokens de API com segurança usando segredos do Azure Databricks. Confira Gerenciamento de segredos.
- Exportações de versão: use carimbos de data/hora ou números de versão nos caminhos de exportação para manter as exportações históricas.
- Limpe exportações antigas: implemente políticas de retenção para excluir exportações antigas e gerenciar custos de armazenamento.
- Exportações incrementais: para workspaces grandes, considere implementar exportações incrementais que exportam apenas dados alterados desde a última exportação.