Converta tabelas externas ou estrangeiras do Delta Lake em tabelas gerenciadas do Unity Catalog
Pré-lançamento público
A conversão de uma tabela externa em uma tabela gerenciada está disponível em geral.
A conversão de uma tabela externa para uma tabela gerenciada está em Prévia Pública. Somente tabelas externas federadas usando Hive metastore e Federação do Glue são compatíveis.
Para converter uma tabela Delta Lake externa ou estrangeira para uma tabela gerenciada do Unity Catalog no Databricks, use o comando ALTER TABLE ... SET MANAGED ou, para tabelas externas, o Catalog Explorer. A conversão mantém as configurações da tabela, incluindo nome, configurações, permissões e views, e mantém o histórico da tabela.
Para conversões de tabelas externas, SET MANAGED também:
- Minimiza o tempo de inatividade do leitor e do gravador.
- Lida com gravações concorrentes durante a conversão.
- Permite reverter uma tabela gerenciada convertida para uma tabela externa.
- Redireciona leituras e gravações baseadas em caminho para permitir que o código legado funcione após a conversão.
Embora você também possa usar CREATE TABLE AS SELECT (CTAS) para converter uma tabela externa, o Databricks recomenda SET MANAGED para estes benefícios.
Para conversões de tabelas externas, o Databricks define a otimização preditiva na tabela convertida para INHERIT em vez de habilitá-la automaticamente. Consulte Tabelas externas usando SQL.
Para converter tabelas estrangeiras em tabelas externas, consulte Converter uma tabela estrangeira em uma tabela externa do Unity Catalog.
Pré-requisitos
Tabelas externas
A conversão de tabelas externas em tabelas gerenciadas tem os seguintes pré-requisitos:
-
Formato : A tabela deve usar o formato Delta Lake.
-
Runtime : Você deve usar o Databricks Runtime 17.3 LTS ou acima ou compute serverless para usar
SET MANAGED,UNSET MANAGEDouTRUNCATE UNIFORM HISTORY. -
Leitores e gravadores : os leitores e gravadores do Databricks para as suas tabelas de origem devem usar o Databricks Runtime 15.4 LTS ou acima. Se seus leitores ou gravadores usarem 14.3 LTS ou abaixo, consulte Leitores e gravadores legados.
-
Clientes externos: Clientes externos (não-Databricks) devem dar suporte às leituras para tabelas gerenciadas do Unity Catalog. Consulte Acessar tabelas com clientes Delta.
- Use o dashboard de percepções de acesso para ver se os leitores e gravadores que acessam suas tabelas são do Databricks Runtime ou externos não-Databricks.
-
Compatibilidade de recursos: Se sua tabela
minReaderVersion=2minWriterVersion=7tiver,tableFeatures={..., columnMapping}e, oSET MANAGEDcomando falha com umDELTA_TRUNCATED_TRANSACTION_LOGerro. Verifique se sua tabela possui essas propriedades usandoDESCRIBE DETAIL. Consulte compatibilidade e protocolos de recursos do Delta Lake.
Após a conversão, leituras e gravações baseadas em caminho são automaticamente redirecionadas para o novo local gerenciado com uma ligeira sobrecarga de desempenho. A Databricks recomenda migrar todo o acesso baseado em caminho para acesso baseado em nome para evitar a sobrecarga de desempenho. Consulte redirecionamento baseado em caminho.
Para evitar conflitos, cancele quaisquer Jobs de comando OPTIMIZE existentes (clustering líquido, compactação, ZORDER) operando em sua tabela externa e não programe nenhum Job enquanto você converte suas tabelas externas em tabelas gerenciadas.
Tabelas externas
Pré-lançamento público
A conversão de uma tabela externa para uma tabela gerenciada está em Prévia Pública.
A conversão de tabelas externas para tabelas gerenciadas tem os seguintes pré-requisitos:
- Formato dos dados: A tabela estrangeira deve usar o formato Delta Lake. Para realizar uma conversão única para Parquet, consulte Converter para Delta Lake.
- Runtime : Databricks Runtime 17.3 ou acima.
- Tipo de tabela : O tipo de tabela do Hive metastore (HMS) deve ser uma tabela externa do HMS. O comando falha se a tabela for uma tabela HMS gerenciada.
- Permissões : permissões
OWNERouMANAGEna tabela e permissãoCREATEemEXTERNAL LOCATION.
Tempo de inatividade e tempos de cópia de dados
O comando SET MANAGED minimiza ou elimina o tempo de inatividade em comparação com abordagens alternativas, como DEEP CLONE.
Tabelas externas
O processo de conversão para tabelas externas usa uma abordagem de duas etapas:
- **Cópia inicial de dados (sem tempo de inatividade):** O comando copia dados da tabela e o log de transações Delta do local externo para o local gerenciado. Leitores e gravadores ativos para a tabela externa são executados sem interrupção.
- Mudar para local gerenciado (breve tempo de inatividade): Commits feitos no local externo durante o primeiro passo são movidos para o local gerenciado, e os metadados da tabela são atualizados para registrar o novo local gerenciado. Durante este passo, todas as escritas no local externo são temporariamente bloqueadas, resultando em tempo de inatividade do escritor. Leitores em Databricks Runtime 16.4 LTS ou acima não experimentam tempo de inatividade, mas leitores em Databricks Runtime 15.4 LTS e abaixo podem experimentar tempo de inatividade.
A tabela a seguir mostra o tempo de inatividade estimado com base no tamanho da tabela de origem e em uma taxa de transferência estimada de 0,5-2 GB/núcleo de CPU/minuto:
Tamanho da tabela | Tamanho de cluster recomendado | Tempo estimado de cópia de dados | Tempo de inatividade estimado de leitor e gravador |
|---|---|---|---|
100 GB ou menos | SQL warehouse X-Large de 32 núcleos | ~6 minutos ou menos | ~1-2 minutos ou menos |
1 TB | SQL warehouse de 64 núcleos / 2X-Large | ~30 min | ~1-2 min |
10 TB | SQL warehouse de 256 núcleos / 4X-Large | Aprox. 1,5 horas | ~1-5 min |
O tempo de inatividade pode variar com base em fatores como tamanho do arquivo, número de arquivos e número de commits.
Tabelas externas
O tempo de inatividade da conversão de tabelas externas depende se você usar MOVE ou COPY:
- Para
MOVE, pode ocorrer tempo de inatividade conforme descrito para tabelas externas. Consulte Tabelas externas. - Para
COPY, você é responsável por gerenciar o tempo de inatividade porque o processo de conversão copia a tabela de origem para o local de armazenamento gerenciado, criando duas cópias separadas dos dados. Você é responsável por desabilitar leituras e gravações na tabela de origem no catálogo externo e migrar cargas de trabalho para usar a nova tabela gerenciada.
Converter para uma tabela gerenciada
Converta uma tabela externa usando o Catalog Explorer ou SQL, ou converta uma tabela externa usando SQL.
Tabelas externas usando o Explorador de Catálogos (Beta)
Beta
A conversão de tabelas externas em gerenciadas usando o Catalog Explorer está em Beta.
Usando o Catalog Explorer, você pode converter uma ou mais tabelas externas em um esquema por vez.
-
Vá para a tabela ou o esquema que você deseja converter no Catalog Explorer.
-
Em Sobre esta tabela (página de detalhes da tabela) ou Sobre este esquema (página de detalhes do esquema), clique em Explorar otimizações .
-
Em Por que migrar para tabelas gerenciadas do Unity Catalog? caixa de diálogo, clique em **Continuar**.

-
Selecione as tabelas externas que você deseja converter. Se você abriu a caixa de diálogo a partir de uma página de detalhes da tabela, o Catalog Explorer pré-seleciona sua tabela. Use a barra de pesquisa para encontrar tabelas adicionais. Tabelas gerenciadas não são selecionáveis.

-
Clique em Criar notebook de conversão .
-
Opcionalmente, insira um nome para o Notebook. Por default, isso salva o Notebook na sua pasta home. Clique em **Navegar** para salvá-lo em um local diferente.

-
No notebook, analise as melhores práticas e verifique se você atende a todos os pré-requisitos.
-
Execute a célula SET MANAGED Queries .
Após a execução da célula, o tipo de tabela é exibido como **GERENCIADA** em vez de **EXTERNA** no Catalog Explorer. Refresh a página se o status não atualizar imediatamente.
Tabelas externas usando SQL
Dependendo se sua tabela externa tem leituras Apache Iceberg (UniForm) habilitadas, execute um dos seguintes comandos. Para verificar se sua tabela tem leituras Iceberg habilitadas, consulte Verifique se as leituras Iceberg estão habilitadas.
-
Para tabelas externas do Unity Catalog sem leituras do Iceberg ativadas, execute o seguinte comando:
SQLALTER TABLE catalog.schema.my_external_table SET MANAGED;Após a conversão, você pode habilitar leituras do Iceberg em sua tabela gerenciada sem preocupações de compatibilidade.
-
Para tabelas externas do Unity Catalog com leituras do Iceberg já habilitadas, execute o seguinte comando:
SQLALTER TABLE catalog.schema.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY;Inclua
TRUNCATE UNIFORM HISTORYpara manter o desempenho e a compatibilidade ideais da tabela.TRUNCATE UNIFORM HISTORYtrunca apenas a história do UniForm Iceberg e não remove a história Delta. Este comando resulta em um curto tempo de inatividade de leitura e gravação para o Iceberg após o truncamento.
Após a conversão da tabela, as transmissões de leitura e gravação existentes falham. Reinicie as transmissões com as mesmas configurações para usar automaticamente o redirecionamento baseado em caminho. Verifique se seus leitores e gravadores funcionam com a tabela gerenciada. Consulte comportamento de transmissão.
A Otimização Preditiva é ativada automaticamente após a conversão, a menos que você a tenha desativado manualmente. Consulte Verificar se a Otimização Preditiva está habilitada.
O Databricks retém os dados em seu local externo do Unity Catalog por 14 dias para permitir a reversão. Consulte Reverter uma conversão de tabela gerenciada. Após 14 dias, com a otimização preditiva habilitada, o Databricks exclui automaticamente esses dados para recuperar o armazenamento e economizar custos. Se você desativar a otimização preditiva, execute VACUUM (requer Databricks Runtime 17.3 LTS ou superior ou compute serverless) na tabela gerenciada recém-convertida após 14 dias para recuperar o armazenamento por conta própria.
VACUUM my_converted_table
Mesmo com a otimização preditiva ativada, os dados no seu local externo do Unity Catalog podem não ser excluídos após 14 dias. Por exemplo, isso pode ocorrer quando a tabela gerenciada é pouco usada ou pequena. Se os dados anteriores permanecerem, execute VACUUM manualmente para removê-lo.
O Databricks exclui apenas os dados no local externo. O log de transações do Delta e a referência à tabela no Unity Catalog são mantidos.
Tabelas externas usando SQL
Pré-lançamento público
A conversão de uma tabela externa para uma tabela gerenciada está em Prévia Pública.
Para converter sua tabela externa do Unity Catalog para ser gerenciada pelo Unity Catalog, execute o seguinte comando:
ALTER TABLE source_table SET MANAGED {MOVE | COPY}
-
source_table
Uma tabela externa existente federada no Unity Catalog.
-
MOVEConverte a tabela em gerenciada e desabilita o acesso à tabela de origem no catálogo externo.
-
O acesso através do catálogo externo ou acesso baseado em caminho falha após a conversão da tabela. Todos os leitores e gravadores da tabela devem usar o namespace do Unity Catalog para acesso. Por exemplo:
SQLSELECT * FROM catalog_name.schema_name.table_name; -
O acesso baseado em caminho não é compatível e falha depois que a tabela é convertida. Por exemplo:
SQLSELECT * FROM delta.`protocol://path/to/table`; -
A versão do leitor/gravador e os requisitos de compatibilidade do cliente são os mesmos descritos em Pré-requisitos e Leitores e gravadores legados.
-
A otimização preditiva está definida como
INHERIT, a menos que você a tenha configurado manualmente. Para verificar se a otimização preditiva está habilitada, consulte Verificar se a otimização preditiva está habilitada.
-
-
COPYConverte a tabela para gerenciada sem modificar ou desabilitar o acesso à tabela de origem no catálogo externo.
- Durante a conversão para gerenciada, o processo de conversão copia dados da tabela de origem para o local de armazenamento gerenciado definido para a tabela externa, criando duas cópias separadas: a nova tabela gerenciada e a tabela de origem no catálogo externo.
- Diferente de
MOVE, onde leituras e gravações falham, ao usarCOPY, você é responsável por desabilitar corretamente leituras e gravações para a tabela de origem no catálogo externo e garantir que as cargas de trabalho tenham migrado para o novo catálogo.
Após a conversão da tabela, você deve reiniciar quaisquer jobs de transmissão (de leitura ou gravação) que usam a tabela externa e verificar se seus leitores e gravadores funcionam com a tabela gerenciada.
Antes da conversão, se você descartar a tabela de origem no catálogo externo, o Unity Catalog também descartará a tabela estrangeira. Depois de converter a tabela para gerenciada, descartar a tabela de origem no catálogo externo não afeta a tabela gerenciada do Unity Catalog.
Se o comando for interrompido durante a cópia dos dados, reinicie-o. O comando retoma de onde parou.
A Databricks recomenda que você evite executar vários comandos SET MANAGED concomitantemente na mesma tabela, o que pode levar a um estado de tabela inconsistente.
Verificar conversão
Para verificar se a sua tabela foi convertida para uma tabela gerenciada com sucesso, verifique se a tabela Type é MANAGED. Você pode fazer uma das seguintes opções:
-
Abra uma nova tab e vá para o Catalog Explorer. Na tab **Detalhes**, em **Sobre esta tabela**, o **Tipo** da tabela aparece como **Gerenciado**.
-
Verifique a tabela
Typeexecutando o seguinte comando SQL:SQLDESCRIBE EXTENDED catalog_name.schema_name.table_namePara verificar várias tabelas de uma vez ou criar um script de verificação, consulte
information_schema.tables:SQLSELECT table_type FROM system.information_schema.tables
WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
Leitores e gravadores legados
O Databricks recomenda atualizar todos os leitores e gravadores para o Databricks Runtime 15.4 LTS ou superior para usar todos os recursos de SET MANAGED, incluindo a retenção do histórico da tabela.
Ainda é possível usar SET MANAGED se houver leitores ou gravadores no Databricks Runtime 15.3 ou inferior. No entanto, após a conversão para uma tabela gerenciada, a viagem do tempo para commits históricos é possível apenas por versão, e não por carimbo de data/hora.
Se você reverter para uma tabela externa em até 14 dias, a viagem do tempo para commits históricos feitos antes da conversão será reativada. A viagem do tempo usando carimbos de data/hora não é compatível para commits feitos na tabela gerenciada convertida entre a conversão e a reversão. Consulte Reverter uma conversão de tabela gerenciada.
Gravar em uma tabela após a conversão com o Databricks Runtime 15.3 ou abaixo exige a exclusão do recurso inCommitTimestamp:
ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;
Redirecionamento baseado em caminho
Visualização
O redirecionamento baseado em caminho está em Pré-lançamento público. Para se inscrever, preencha este formulário.
No Databricks Runtime 18.1 e acima, depois que você converte uma tabela externa em uma tabela gerenciada do Unity Catalog, as leituras e gravações baseadas em caminho para o local externo anterior redirecionam automaticamente para o novo local gerenciado. Uma leitura baseada em caminho é um código como SELECT * FROM delta.`/path/to/my_table. O redirecionamento baseado em caminho reduz o tempo e o esforço necessários para migrar para tabelas gerenciadas, permitindo que o código legado que usa caminhos de armazenamento continue funcionando sem refatoração.
As conversões de tabelas externas não redirecionam o acesso baseado em caminho.
Para casos de uso de baixa latência, o Databricks recomenda que você migre o acesso baseado em caminho para o acesso baseado em nome. O redirecionamento baseado em caminho adiciona várias centenas de milissegundos de sobrecarga para cada leitura ou gravação baseada em caminho e exige que os logs Delta antigos permaneçam ativos em seu local externo do Unity Catalog. As leituras e gravações baseadas em nome não têm sobrecarga adicional de desempenho. Consulte Migrar código baseado em caminho para baseado em nome.
Migrar código baseado em caminho para baseado em nome
Se você decidir não usar o redirecionamento baseado em caminho, você pode migrar o código legado. Para migrar, substitua referências baseadas em caminho por referências baseadas em nome.
O exemplo de código a seguir contém uma referência de tabela baseada em caminho a arquivos:
SELECT * FROM delta.`/path/to/customers_table`;
Substitua a referência baseada em caminho por uma referência baseada em nome para uma tabela externa, como no código a seguir:
SELECT * FROM catalog_name.schema_name.customers_table;
Comportamento da Transmissão
A transmissão com redirecionamento baseado em caminho suporta leituras e gravações nas seguintes versões do Databricks Runtime:
- As leituras têm suporte no Databricks Runtime 18.1 e acima.
- Gravações têm suporte no Databricks Runtime 18.2 e acima.
Após a conversão, você deve reiniciar todos os jobs de transmissão para evitar leituras ou escritas no local da tabela anterior.
Leituras e gravações de transmissão baseadas em caminho falham e param no próximo ponto de verificação com uma mensagem de migração:
- Para leituras, a transmissão gera um erro:
DELTA_STREAMING_INTERRUPTED_BY_MANAGED_TABLE_CONVERSION: The table at <path> has been converted to a Unity Catalog managed table. The stream has been stopped to ensure data consistency. Restart the stream and it will automatically resume from the last committed offset using the converted table. - Para gravações, o primeiro micro-lote após a conversão gera um erro:
Operation not allowed: STREAMING WRITE cannot be performed on a table with redirect feature. The no redirect rules are not satisfied [].
Para resolver erros, reinicie as transmissões com as mesmas configurações. O acesso baseado em caminho redireciona automaticamente para a tabela gerenciada.
Para limitações de redirecionamento baseado em caminho, consulte Limitações.
Solução de problemas de falhas de conversão
Esta seção descreve como resolver problemas comuns ao converter tabelas externas em tabelas gerenciadas pelo Unity Catalog usando SET MANAGED.
VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED
Se a conversão falhar, sempre tente novamente usando a mesma versão do Databricks Runtime. Metadados podem ser serializados de forma diferente entre versões, o que causa uma falha VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED se você tentar novamente uma conversão em uma versão diferente do Databricks Runtime.
Encerramento do cluster durante a conversão
Se o cluster for desligado durante a conversão, o comando pode falhar com DELTA_ALTER_TABLE_SET_MANAGED_INTERNAL_ERROR. Repita o comando para retomar a conversão.
Tabela externa corrompida
Se a tabela externa já estiver corrompida (por exemplo, estado de tabela inválido), a conversão pode falhar com erros como DELTA_TRUNCATED_TRANSACTION_LOG, DELTA_TXN_LOG_FAILED_INTEGRITY ou DELTA_STATE_RECOVER_ERRORS. Antes de tentar a conversão, verifique se você pode executar operações básicas na tabela externa, como DESCRIBE DETAIL.
Falha na validação de arquivo
O comando SET MANAGED valida que copiou todos os arquivos no snapshot mais recente da tabela para o novo local da tabela gerenciada. Se algum arquivo estiver faltando, o comando falha com um erro de DELTA_ALTER_TABLE_SET_MANAGED_FAILED.FILE_VALIDATION_FAILED.
Para resolver este problema:
- Verifique seus logs do driver Spark para identificar quais arquivos não puderam ser migrados.
- Verifique se esses arquivos existem no local da tabela externa de origem e estão acessíveis.
- Tentar novamente o comando
ALTER TABLE ... SET MANAGED.
Se o problema persistir, entre em contato com o suporte da Databricks.
Reverter uma conversão de tabela gerenciada
Comandos de rollback exigem compute serverless ou Databricks Runtime 17.3 LTS e superior.
Tabela externa
Após converter uma tabela externa em uma tabela gerenciada, você pode reverter dentro de 14 dias usando o comando UNSET MANAGED. Isso atualiza os metadados da tabela para apontar de volta para o local externo original. Databricks preserva todas as gravações feitas no local gerenciado após a conversão.
Para reverter para uma tabela externa, execute o seguinte comando:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED;
Tenha as seguintes informações em mente:
- Se o comando de rollback for interrompido ou falhar, execute-o novamente para tentar de novo.
- Você deve reiniciar seus Jobs de transmissão após reverter, semelhante à conversão.
- Commits feitos no local gerenciado entre a conversão e a reversão permitem a viagem do tempo por versão, mas não por carimbo de data/hora.
- Sete dias após o rollback, o Databricks excluirá automaticamente os dados no local gerenciado.
Tabela estrangeira: MOVE
VOCÊ DEVE EXECUTAR UNSET MANAGED antes de descartar a tabela gerenciada. Descartar a tabela sem executar UNSET MANAGED primeiro pode resultar em perda de dados ou inconsistências.
É possível reverter a migração da tabela e recuperar o acesso à tabela de origem no catálogo externo, usando o comando UNSET MANAGED. A reversão exige dois passos: primeiro, é necessário reverter a tabela para uma tabela externa e, em seguida, descartar a tabela externa para refederar a tabela como uma tabela estrangeira.
- Para reverter para uma tabela externa, execute o seguinte comando:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
- Para refederar a tabela para uma tabela externa, descarte a tabela externa com o seguinte comando:
DROP TABLE catalog.schema.my_managed_table
A tabela externa está disponível após a próxima sincronização do catálogo.
Tenha as seguintes informações em mente:
- Para os commits que você fez no local externo entre a conversão e o rollback, você pode fazer viagem do tempo por versão, mas não por carimbo de data/hora.
- Sete dias após o rollback, o Databricks exclui os dados no local gerenciado.
Tabela estrangeira: COPY
Para reverter a migração da tabela, você não precisa executar o comando UNSET MANAGED porque a tabela de origem no catálogo externo não foi modificada. Descarte a tabela gerenciada e o Databricks a refedera como uma tabela estrangeira após a próxima sincronização do catálogo.
Verificar rollback
Verifique os rollbacks de forma diferente para tabelas externas e foreign.
Tabelas externas
Para verificar se sua tabela gerenciada foi revertida para uma tabela externa com sucesso, verifique se a tabela Type é EXTERNAL. Você pode fazer qualquer uma das seguintes opções:
-
Abra uma nova tab e vá para o Catalog Explorer. Na tab **Detalhes**, em **Sobre esta tabela**, o **Tipo** da tabela é exibido como **Externa**.
-
Verifique a tabela
Typeexecutando o seguinte comando SQL:SQLDESCRIBE EXTENDED catalog_name.schema_name.table_namePara verificar várias tabelas de uma vez ou criar um script de verificação, consulte
information_schema.tables:SQLSELECT table_type FROM system.information_schema.tables
WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
Tabelas externas
Para verificar se sua tabela gerenciada foi revertida para uma tabela externa com sucesso, verifique se a tabela Type é FOREIGN. Você pode fazer uma das seguintes opções:
-
Abra uma nova tab e vá para o Catalog Explorer. Na tab Detalhes , em Sobre esta tabela , o Tipo de tabela é exibido como Foreign.
-
Verifique o tipo da tabela executando o seguinte comando SQL:
SQLSELECT table_type FROM system.information_schema.tables
WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';A coluna
table_typeé exibida comoFOREIGN.
Não use DESCRIBE EXTENDED para verificar conversões ou reversões de tabelas externas. A federação usa o comportamento do catálogo hive_metastore para este comando, então ela mostra a tabela Type como EXTERNAL, independentemente do estado real da tabela.
Tópicos avançados
Esta seção contém tópicos avançados para converter tabelas estrangeiras e externas em tabelas gerenciadas.
Converter no nível de esquema ou catálogo
Você tem as duas opções a seguir para automatizar a conversão de tabelas no nível do esquema ou do catálogo:
-
Percorra as suas tabelas em seus esquemas para converter cada tabela individualmente.
-
Use o projeto discoverx labs para converter esquemas ou catálogos inteiros de uma só vez:
Pythondf = (dx.from_tables("prod.*.*")
.with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
.apply())
Consulte Databricks Labs e discoverx.
Criar tabelas em um catálogo externo
Você pode criar tabelas externas ou gerenciadas em um catálogo estrangeiro. O comportamento depende da configuração do esquema:
- Para esquemas Glue ou eHMS , ou para esquemas com um local gerenciado definido no Unity Catalog : Se você executar
CREATE TABLE foreign_catalog.schema.table, isso criará uma tabela gerenciada ou externa do Unity Catalog. O Databricks não envia nem sincroniza a tabela para o catálogo externo. - Para esquemas de conexões internas do Hive metastore : se você tentar criar uma tabela em um esquema externo, ela ainda criará uma tabela externa e também criará uma tabela em
hive_metastore. - Para o Hive metastore de workspace legado : como ele tem federação de leitura e gravação, se você criar uma tabela no catálogo externo, ele também criará uma tabela no Hive metastore interno.
Tabelas externas baseadas em DBFS
Ao converter uma tabela com suporte DBFS, o Databricks armazena o mapeamento atual do caminho DBFS como o local do caminho de cloud da tabela externa.
Limitações
A conversão de tabelas externas ou estrangeiras em tabelas gerenciadas tem as seguintes limitações:
-
O histórico da tabela para commits feitos após a conversão, mas antes da reversão, permite a viagem do tempo por versão, mas não por carimbo de data/hora.
-
O OpenSharing não é totalmente compatível com o comando
SET MANAGED. O Open OpenSharing é compatível, mas o compartilhamento Databricks-to-Databricks não atualiza automaticamente o local gerenciado da tabela do destinatário. O destinatário continua a ler do local antigo até que você compartilhe a tabela novamente. Para compartilhar a tabela novamente, execute os seguintes comandos:SQLALTER SHARE <share_name> REMOVE TABLE <table_name>;
ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY; -
Se o local gerenciado default do seu metastore, catálogo ou esquema do Unity Catalog estiver em uma região de cloud diferente do local de armazenamento da tabela de origem, você pode incorrer em custos adicionais de transferência de dados entre regiões do seu provedor de cloud.
Para verificar a localização do seu esquema e catálogo, execute os seguintes comandos:
SQLDESC SCHEMA EXTENDED <catalog_name>.<schema_name>;
DESC CATALOG EXTENDED <catalog_name>;Para verificar a localização do seu metastore, execute um dos seguintes comandos:
SQLDESC METASTORE; -- Option 1
SELECT * FROM system.information_schema.metastores; -- Option 2
Limitações de redirecionamento baseado em caminho:
- Você deve reiniciar quaisquer jobs de transmissão após a conversão. Consulte Comportamento de transmissão.
- O redirecionamento baseado em caminho tem apenas compatibilidade com versões anteriores para o processo de migração e não habilita novo acesso baseado em caminho a tabelas gerenciadas do Unity Catalog.
Limitações de tabela externa:
- Somente tabelas externas federadas usando Hive metastore e federação Glue são compatíveis com a conversão.