Converter para Unity Catalog gerenciar tabela a partir de uma tabela externa
Visualização
Esse recurso está em Public Preview e, no momento, só está disponível para os clientes participantes. Para participar da prévia, inscreva-se preenchendo este formulário.
Esta página descreve como usar o comando SET MANAGED
para converter uma tabela externa em uma tabela Unity Catalog gerenciar em Databricks.
Visão geral doSET MANAGED
O recurso SET MANAGED
simplifica a conversão de uma tabela externa em uma tabela Unity Catalog gerenciar em Databricks. Isso evita a complexidade de executar manualmente o site DEEP CLONE
e, em seguida, eliminar a tabela externa, um processo que pode causar um tempo de inatividade significativo e levar à perda do histórico e das configurações da tabela.
Os benefícios do recurso SET MANAGED
incluem:
- Minimizando o tempo de inatividade do leitor e do escritor.
- Tratamento de gravações concorrente durante a conversão.
- História da mesa de retenção.
- Manter as mesmas configurações de tabela, incluindo o mesmo nome, configurações, permissões e visualização.
- Capacidade de reverter uma tabela gerenciar convertida para uma tabela externa.
Pré-requisitos
Para usar o recurso de convenção de tabela, o senhor deve ter:
-
Todos os leitores e gravadores das tabelas externas devem usar o acesso baseado em nomes. Por exemplo:
SQLSELECT * FROM catalog_name.schema_name.table_name;
O acesso baseado em caminho não é suportado e falhará após a conversão da tabela. Por exemplo:
SQLSELECT * FROM delta.`s3://path/to/table`;
-
O senhor deve usar o site Databricks Runtime 17.0 ou superior para executar o comando
SET MANAGED
ouUNSET MANAGED
. -
Databricks Os leitores e escritores devem usar o site Databricks Runtime 15.4 LTS ou acima. Se seus leitores ou redatores usarem a versão 14.3 LTS ou abaixo, consulte Opção alternativa para leitores e redatores em Databricks Runtime 14.3 LTS ou abaixo.
-
Os clientes externos (nãoDatabricks) devem suportar leituras em tabelas gerenciais Unity Catalog. Consulte Ler tabelas com clientes Delta.
-
Desativar a propriedade de tabela UniForm em tabelas externas que a tenham ativado:
SQLALTER TABLE catalog.schema.my_external_table
UNSET TBLTBLPROPERTIES('delta.universalFormat.enabledFormats'= '');Depois de converter sua tabela, o senhor pode reativar o UniForm:
SQLALTER TABLE table_name SET TBLPROPERTIES (
'delta.enableIcebergCompatV2' = 'true'
'delta.universalFormat.enabledFormats' = 'iceberg');
Para evitar conflitos, cancele qualquer trabalho de comando OPTIMIZE
existente (líquido clustering, compactação, ZORDER
) que esteja operando na sua tabela e não programe nenhum trabalho enquanto o senhor converte as tabelas externas em tabelas gerenciáveis.
Converter de tabela externa para gerenciar
O SET MANAGED
comando está disponível em Databricks Runtime 17.0 ou acima.
Para converter sua tabela externa do UC para Unity Catalog gerenciar, execute o seguinte comando:
ALTER TABLE catalog.schema.my_external_table SET MANAGED;
Se o comando for interrompido durante a cópia de dados, o senhor pode reiniciá-lo e ele continuará de onde parou.
Databricks recomenda não executar vários SET MANAGED
comandos simultaneamente na mesma tabela, o que pode levar a um estado inconsistente da tabela.
Depois que sua tabela for convertida, você deverá:
- Se o senhor tiver desativado o UniForm em sua mesa, deverá ativá-lo novamente.
- Reiniciar qualquer trabalho de transmissão (leitura ou gravação) usando a tabela externa.
- Certifique-se de que seus leitores e redatores trabalhem com a tabela gerenciar.
A otimização preditiva é ativada automaticamente, exceto se você a desativou manualmente. Consulte Verificar se a otimização preditiva está ativada
Verifique a convenção
O senhor pode confirmar que sua tabela externa foi convertida em uma tabela gerenciar:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Se a tabela tiver sido convertida, o Type
abaixo de col_name
será exibido como MANAGED
abaixo de data_type
.
Opção alternativa para leitores e escritores em Databricks Runtime 14.3 LTS ou abaixo
Databricks recomenda que o senhor atualize todos os leitores e gravadores para Databricks Runtime 15.4 LTS ou superior para aproveitar as vantagens do comando SET MANAGED
, inclusive a capacidade de reter o histórico da tabela.
O senhor ainda pode usar o SET MANAGED
comando se tiver leitores ou escritores com Databricks Runtime 14.3 ou abaixo. No entanto, após a conversão para uma tabela gerenciar, o senhor não pode viajar do tempo para o commit histórico por carimbo de data/hora. Você só pode fazer isso por versão. Se o senhor reverter para uma tabela externa na janela de 14 dias, a viagem do tempo para o commit histórico feito antes da conversão será reativada.
Em todos os casos (independentemente da versão do DBR), a reversão para UC externo por carimbo de data/hora não funciona para nenhum commit feito na tabela gerenciar UC convertida, entre o momento em que o senhor terminou a conversão e antes de tentar reverter.
ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;
Voltar para uma mesa externa
O UNSET MANAGED
comando está disponível em Databricks Runtime 17.0 ou acima.
Depois de converter uma tabela externa em uma tabela gerenciar, o senhor pode reverter dentro de 14 dias.
Se o senhor fizer uma reversão, o commit feito no local externo entre a conversão e a reversão poderá viajar no tempo pela versão, mas não pelo carimbo de data/hora. Sete dias após a reversão, os dados no local gerenciado serão excluídos.
Para reverter para uma tabela externa, execute o seguinte comando:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
Se o comando rollback for interrompido, o senhor poderá executá-lo novamente para tentar de novo, de forma semelhante ao comando SET gerenciar.
Verifique a reversão
Você pode confirmar que sua conversão foi revertida:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Se a tabela tiver sido convertida, o Type
abaixo de col_name
será exibido como EXTERNAL
abaixo de data_type
.
O senhor também deve reiniciar o Job de transmissão depois de reverter para uma tabela externa, de forma semelhante à conversão.
Tempo de inatividade e tempos de cópia de dados
O tempo de inatividade pode ocorrer quando leitores ou escritores acessam a tabela durante a conversão. No entanto, em comparação com o comando 'DEEP CLONE', o comando SET MANAGED
minimiza ou elimina o tempo de inatividade para os leitores e minimiza o tempo de inatividade para os gravadores. Os leitores em Databricks Runtime 16.1 ou acima não terão tempo de inatividade durante a segunda etapa de cópia de dados. Os leitores e gravadores não são afetados durante a etapa inicial, quando os dados da tabela e o delta log são copiados.
Durante a segunda etapa, as gravações no local externo Unity Catalog são bloqueadas e o commit feito no local externo durante a primeira cópia de dados será transferido. Essa segunda etapa de cópia de dados acarretará tempo de inatividade para os gravadores e leitores em Databricks Runtime 15.4 LTS ou abaixo.
Depois disso, os leitores e gravadores são transferidos para o local gerenciar Unity Catalog e o novo local da tabela gerenciar é registrado em Unity Catalog. Os leitores com Databricks Runtime 16.1 ou acima terão uma experiência equivalente a nenhum tempo de inatividade.
O tempo de inatividade estimado é:
Tamanho da tabela | Tamanho recomendado do clustering | Hora da cópia dos dados | Tempo de inatividade do leitor e do escritor |
---|---|---|---|
100 GB ou menos | 32 núcleos//DBSQL pequeno | ~6min ou menos | ~1-2min ou menos |
1 TB | mídia de 64 núcleos/DBSQL | ~30 minutos | ~1-2min |
10 TB | 256 núcleos//DBSQL x-large | ~1,5 horas | ~1-5min |
As estimativas pressupõem uma taxa de transferência de 0,5-2 GB/núcleo da CPU/minuto.
O tempo de inatividade pode variar e o desempenho da convenção depende de fatores como o tamanho do arquivo, o número de arquivos e o número de confirmações.
Limitações conhecidas
A conversão de tabelas externas para gerenciar tem as seguintes limitações:
-
Clientes baseados em caminhos e de transmissão : As leituras baseadas em caminhos e os clientes de transmissão podem parar de atualizar silenciosamente, portanto, verifique se eles continuam funcionando após a conversão. O senhor também deve reiniciar qualquer trabalho de transmissão após a conversão.
-
Restrições do histórico da tabela após a reversão : Para os leitores/gravadores em Databricks Runtime 15.4 LTS ou acima, a história da tabela para o commit feito após a conversão, mas antes da reversão, será passível de viagem no tempo por versão, mas não por carimbo de data/hora.
-
Várias regiões de nuvem : Se o local de default gerenciar seu metastore, catálogo ou esquema Unity Catalog estiver em uma região de nuvem diferente do local de armazenamento da tabela externa que está sendo convertida, o senhor poderá incorrer em custos adicionais de transferência de dados entre regiões. O provedor de nuvem impõe essas cobranças fora do controle da Databricks.
Para verificar os locais do esquema, do catálogo e do metastore, o senhor pode usar o seguinte comando:
SQLDESC SCHEMA EXTENDED <catalog_name>.<schema_name>;
DESC SCHEMA EXTENDED <catalog_name>;
SELECT * FROM system.information_schema.metastores;