Clone superficial para tabelas do Catálogo Unity
Importante
O suporte a clones rasos para tabelas gerenciadas do Unity Catalog está em Visualização Pública no Databricks Runtime 13.3 e superior. O suporte a clones rasos para a tabela externa do Unity Catalog está em Visualização Pública no Databricks Runtime 14.2 e superior.
Você pode usar clones superficiais para criar novas tabelas do Catálogo Unity a partir de tabelas existentes do Catálogo Unity. O suporte a clones superficiais para o Unity Catalog 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. VACUUM
O comportamento difere entre tabelas gerenciadas e externas. Consulte clones superficiais do Vacuum e do Unity Catalog.
Para obter mais informações sobre clone Delta, consulte Clonar uma tabela no Azure Databricks.
Para obter mais informações sobre tabelas do Catálogo Unity, consulte O que são tabelas e exibições?.
Criar um clone superficial no Unity Catalog
Você pode criar um clone superficial no Unity Catalog 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 Unity Catalog, 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 fontes | 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 outras instruções create table, 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.
Nota
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 Unity Catalog
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 Unity Catalog, você deve ter privilégios suficientes na tabela e contendo 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 MODIFY
permissões no destino da operação de clone para concluir as seguintes ações:
- Inserir registos
- Excluir registros
- Registos de atualizações
MERGE
CREATE OR REPLACE TABLE
DROP TABLE
Vácuo e Unity Catálogo clones superficiais
Importante
Esse comportamento está em Visualização Pública no Databricks Runtime 13.3 LTS e superior para tabelas gerenciadas e 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 da origem e do destino da operação de clone. A execução VACUUM
na origem de um clone superficial não quebra a tabela clonada.
Normalmente, quando VACUUM
identifica arquivos válidos para um determinado limite de retenção, apenas os metadados da tabela atual são considerados. O suporte a clones superficiais para o Unity Catalog rastreia as relações entre todas as tabelas clonadas e os arquivos de dados de origem, de modo que 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 de clone VACUUM
superficial do Unity Catalog, um arquivo de dados válido é qualquer arquivo dentro do limite de retenção especificado para a tabela de origem ou qualquer tabela clonada. As tabelas gerenciadas e as tabelas externas têm semânticas ligeiramente diferentes.
Esse rastreamento aprimorado de metadados altera como VACUUM
as operações afetam os arquivos de dados que dão suporte às tabelas Delta, com a seguinte semântica:
- Para tabelas gerenciadas,
VACUUM
as operações na origem ou no destino de uma operação de clone superficial podem excluir arquivos de dados da tabela de origem. - Para tabelas externas,
VACUUM
as operações só removem arquivos de dados da tabela de origem quando executadas em relação à tabela de origem. - Somente os arquivos de dados não considerados válidos para a tabela de origem ou qualquer clone superficial em relação à origem são removidos.
- Se vários clones superficiais forem definidos em relação a 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.
Nota
O Databricks recomenda nunca executar VACUUM
com uma configuração de retenção de menos de 7 dias para evitar corromper transações contínuas de longa duração. Se você precisar executar VACUUM
com um limite de retenção mais baixo, certifique-se de entender como VACUUM
clones superficiais no Unity Catalog diferem de como VACUUM
interage com outras tabelas clonadas no Azure Databricks. Consulte Clonar uma tabela no Azure Databricks.
Trabalhar com tabelas clonadas superficiais no modo de acesso de usuário único
Ao trabalhar com clones superficiais do Unity Catalog no modo de acesso de usuário único, você deve ter permissões sobre os recursos para a origem da tabela clonada, bem como a tabela de destino.
Isso significa que, para consultas simples, além das permissões necessárias na tabela de destino, você deve ter USE
permissões no catálogo de origem e esquema e SELECT
permissões na tabela de origem. Para quaisquer consultas que atualizem ou insiram registros na tabela de destino, você também deve ter MODIFY
permissões na tabela de origem.
O Databricks recomenda trabalhar com clones do Unity Catalog em computação com modo de acesso compartilhado, pois isso permite uma evolução independente das permissões para destinos de clone rasos do Unity Catalog e suas tabelas de origem.
Limitações
- Clones superficiais em tabelas externas devem ser tabelas externas. Clones superficiais em tabelas gerenciadas devem ser tabelas gerenciadas.
- Não é possível compartilhar clones superficiais usando o Delta Sharing.
- Você não pode aninhar clones superficiais, o que significa que você não pode fazer um clone superficial a partir de um clone raso.
- Para tabelas gerenciadas, descartar a tabela de origem quebra a tabela de destino para clones superficiais. Os arquivos de dados que dão suporte a tabelas externas não são removidos por
DROP TABLE
operações e, portanto, clones superficiais de tabelas externas não são afetados ao descartar a origem. - O Unity Catalog permite que os usuários
UNDROP
gerenciem tabelas por cerca de 7 dias após umDROP TABLE
comando. No Databricks Runtime 13.3 LTS e superior, clones superficiais gerenciados com base em uma tabela gerenciada descartada continuam a funcionar durante esse período de 7 dias. Se você nãoUNDROP
fizer a tabela de origem nesta janela, o clone superficial para de funcionar quando os arquivos de dados da tabela de origem são coletados lixo.