Clone Superficial para Tabelas do Unity Catalog
Importante
O suporte de clone superficial para tabelas gerenciadas do Catálogo Unity está em Visualização Pública no Databricks Runtime 13.3 e superior. O suporte a clone superficial para tabela externa do Unity Catalog está em Visualização Pública no Databricks Runtime 14.2 e posteriores.
Agora você pode usar o clone superficial para criar novas tabelas gerenciadas do Unity Catalog nas tabelas existentes do Unity Catalog. O suporte de clone superficial para o Catálogo do Unity permite que você crie tabelas com privilégios de controle de acesso independentes de suas tabelas pai sem a necessidade de copiar arquivos de dados subjacentes.
Importante
Você só pode clonar tabelas gerenciadas do Unity Catalog para tabelas gerenciadas do Unity Catalog e tabelas externas do Unity Catalog para tabelas externas do Unity Catalog. O comportamento do VACUUM
é diferente entre tabelas gerenciadas e externas. Consulte Clones shallow do Vacuum e do Catálogo do Unity.
Para obter mais informações sobre o clone Delta, consulte Clonar uma tabela no Azure Databricks.
Para obter mais informações sobre as tabelas do Catálogo do Unity, consulte O que são tabelas e exibições?.
Criar um clone superficial no Catálogo do Unity
Você pode criar um clone superficial no Catálogo do Unity usando a mesma sintaxe disponível para clones superficiais em todo o produto, conforme mostrado no exemplo de sintaxe a seguir:
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name> SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
Para criar um clone superficial no Catálogo do Unity, você deve ter privilégios suficientes nos recursos de origem e de destino, conforme detalhado na tabela a seguir:
Recurso | Permissões necessárias |
---|---|
Tabela de origem | SELECT |
Esquema de origem | USE SCHEMA |
Catálogo de origem | USE CATALOG |
Esquema de destino | USE SCHEMA , CREATE TABLE |
Catálogo de destino | USE CATALOG |
Local externo de destino (somente tabelas externas) | CREATE EXTERNAL TABLE |
Como em outras instruções de criação de tabela, o usuário que cria um clone superficial é o proprietário da tabela de destino. O proprietário de uma tabela clonada de destino pode controlar os direitos de acesso para essa tabela independentemente da tabela de origem.
Observação
O proprietário de uma tabela clonada pode ser diferente do proprietário de uma tabela de origem.
Consultar ou modificar uma tabela clonada superficial no Catálogo do Unity
Importante
As instruções nesta seção descrevem os privilégios necessários para a computação configurada com o modo de acesso compartilhado. Para o modo de acesso de usuário único, consulte Trabalhar com tabelas clonadas superficiais no modo de acesso de usuário único.
Para consultar um clone superficial no Catálogo do Unity, você deve ter privilégios suficientes na tabela e recursos, conforme detalhado na tabela a seguir:
Recurso | Permissões necessárias |
---|---|
Catálogo | USE CATALOG |
Esquema | USE SCHEMA |
Tabela | SELECT |
Você também deve ter permissões MODIFY
no destino da operação de clone para concluir as seguintes ações:
- Inserir registros
- Excluir registros
- Registros de atualização
MERGE
CREATE OR REPLACE TABLE
DROP TABLE
Clones superficiais do Vacuum e do Catálogo do Unity
Importante
Esse comportamento está em Versão Prévia Pública no Databricks Runtime 13.3 LTS e superior para tabelas gerenciadas e no Databricks Runtime 14.2 e superior para tabelas externas.
Quando você usa tabelas do Unity Catalog para a origem e o destino de uma operação de clone superficial, o Unity Catalog gerencia os arquivos de dados subjacentes para melhorar a confiabilidade para a origem e o destino da operação de clone. A execução VACUUM
na origem de um clone superficial não interrompe a tabela clonada.
Normalmente, quando VACUUM
identifica arquivos válidos para um determinado limite de retenção, somente os metadados da tabela atual são considerados. O suporte de clone superficial para o Catálogo do Unity rastreia as relações entre todas as tabelas clonadas e os arquivos de dados de origem, portanto, os arquivos válidos são expandidos para incluir arquivos de dados necessários para retornar consultas para qualquer tabela clonada superficial, bem como a tabela de origem.
Isso significa que, para a semântica VACUUM
de clone superficial do Catálogo do Unity, um arquivo de dados válido é qualquer arquivo dentro do limite de retenção especificado para a tabela de origem ou qualquer tabela clonada. Tabelas gerenciadas e tabelas externas têm uma semântica um pouco diferente.
Esse controle aprimorado de metadados altera como as operações VACUUM
afetam os arquivos de dados que dão suporte às tabelas Delta, com a seguinte semântica:
- Para tabelas gerenciadas, as operações do
VACUUM
em relação à origem ou ao destino de uma operação de clone superficial podem excluir arquivos de dados da tabela de origem. - Para tabelas externas, as operações do
VACUUM
apenas removem os arquivos de dados da tabela de origem quando executados na tabela de origem. - Somente os arquivos de dados não considerados válidos para a tabela de origem ou qualquer clone superficial na origem são removidos.
- Se vários clones superficiais forem definidos em uma única tabela de origem, a execução
VACUUM
em qualquer uma das tabelas clonadas não removerá arquivos de dados válidos para outras tabelas clonadas.
Observação
O Databricks recomenda nunca executar VACUUM
com uma configuração de retenção de menos de 7 dias para evitar corromper transações de longa execução contínuas. Se você precisar executar VACUUM
com um limite de retenção menor, certifique-se de entender como VACUUM
nos clones superficiais no Catálogo do Unity diferem de como VACUUM
interage com outras tabelas clonadas no Azure Databricks. Veja Clonar uma tabela no Azure Databricks.
Trabalhe com tabelas clonadas superficialmente no modo de acesso de usuário único
Ao trabalhar com clones superficiais do Catálogo do Unity no modo de acesso de Usuário Único, você deve ter permissões nos recursos para a origem da tabela clonada, bem como para a tabela de destino.
Isso significa que, para consultas simples além das permissões necessárias na tabela de destino, você deve ter permissões USE
no catálogo de origem e esquema e permissões SELECT
na tabela de origem. Para qualquer consulta que atualize ou insira registros na tabela de destino, você também deve ter permissões MODIFY
na tabela de origem.
O Databricks recomenda trabalhar com clones do Catálogo do Unity na computação com modo de acesso compartilhado, pois isso permite a evolução independente de permissões para destinos de clone superficial do Catálogo do Unity e suas tabelas de origem.
Limitações
- Os clones superficiais nas tabelas externas devem ser tabelas externas. Os clones superficiais nas tabelas gerenciadas devem ser tabelas gerenciadas.
- Não é possível compartilhar clones superficiais usando o Compartilhamento Delta.
- Você não pode aninhar clones superficiais, o que significa que você não pode fazer um clone superficial de um clone superficial.
- Para tabelas gerenciadas, remover a tabela de origem interrompe a tabela de destino para clones superficiais. Os arquivos de dados que fazem backup de tabelas externas não são removidos por operações do
DROP TABLE
e, portanto, os clones superficiais de tabelas externas não são afetados ao remover a origem. - O Unity Catalog permite aos usuários
UNDROP
tabelas gerenciadas por cerca de 7 dias após um comandoDROP TABLE
. No Databricks Runtime 13.3 LTS e superior, os clones superficiais geridos com base numa tabela gerida eliminada continuam a funcionar durante este período de 7 dias. Se você nãoUNDROP
a tabela de origem nessa janela, o clone superficial interromperá o funcionamento depois que os arquivos de dados da tabela de origem forem coletados como lixo.