Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
O suporte a clones superficiais difere para tabelas geridas pelo Unity Catalog e para tabelas externas. Para tabelas geridas, use Databricks Runtime 13.3 LTS e superiores, e para tabelas externas use Databricks Runtime 14.3 LTS e superiores.
Você só pode clonar tabelas geridas do Unity Catalog para tabelas geridas do Unity Catalog e tabelas externas do Unity Catalog para tabelas externas do Unity Catalog.
VACUUM O comportamento difere entre tabelas gerenciadas e externas. Veja Use VACUUM com clones superficiais do Unity Catalog.
Use o clone superficial para criar tabelas do Unity Catalog com privilégios de controlo de acesso independentes das suas tabelas fonte, sem copiar os ficheiros de dados subjacentes. A clonagem superficial no Unity Catalog é suportada apenas para tabelas Delta Lake. Não podes criar um clone raso de uma tabela Iceberg ou de qualquer outra tabela não Delta.
Para informações sobre clonagem de uma tabela, veja Clonar uma tabela no Azure Databricks.
Criar um clone superficial gerido pelo Unity Catalog
Crie um clone superficial de uma tabela gerida no Unity Catalog.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
Para criar um clone superficial gerido no Unity Catalog, é necessário possuir os seguintes privilégios nos recursos de origem e de destino.
| Resource | Permissões necessárias |
|---|---|
| Esquema de origem | USE SCHEMA |
| Catálogo de fontes | USE CATALOG |
| Esquema de destino |
USE SCHEMA, CREATE TABLE |
| Catálogo alvo | USE CATALOG |
Tal como outras instruções create table, quando executas SHALLOW CLONE, és o dono da tabela alvo. O proprietário de uma tabela alvo clonada controla os direitos de acesso dessa tabela independentemente da tabela de origem. O proprietário de uma tabela clonada pode ser diferente do proprietário de uma tabela de origem.
Criar um clone superficial externo do Unity Catalog
Crie um clone externo superficial do Unity Catalog especificando uma localização externa.
CREATE TABLE <catalog-name>.<schema-name>.<target-table-name>
SHALLOW CLONE <catalog-name>.<schema-name>.<source-table-name>
LOCATION 's3://<bucket-name>/<path-name>/<target-table-name>'
Para criar um clone externo raso no Unity Catalog, deve ter os seguintes direitos sobre os recursos de origem e destino.
| Resource | Permissões necessárias |
|---|---|
| Esquema de origem | USE SCHEMA |
| Catálogo de fontes | USE CATALOG |
| Esquema de destino |
USE SCHEMA, CREATE TABLE |
| Catálogo alvo | USE CATALOG |
| Localização externa do alvo | CREATE EXTERNAL TABLE |
Trabalhar com tabelas clonadas superficiais em modo de acesso padrão
Para consultar um clone superficial no modo de acesso padrão (anteriormente modo de acesso partilhado), deve ter os seguintes privilégios na tabela e nos recursos que a contêm:
| Resource | Permissões necessárias |
|---|---|
| Catalog | USE CATALOG |
| Schema | USE SCHEMA |
| Tabela | SELECT |
Tem também de ter permissões MODIFY no destino da operação de clonagem para executar as seguintes operações:
INSERTDELETEUPDATEMERGECREATE TABLEDROP TABLE
Trabalhar com tabelas clonadas superficiais no modo de acesso dedicado
Ao trabalhar com clones superficiais do Unity Catalog em modo de acesso dedicado (anteriormente modo de acesso de utilizador único), deve ter permissões sobre os recursos tanto para a tabela de origem clonada como para a tabela de destino.
Para consultas simples, além de ter as permissões necessárias na tabela de destino, deve ter permissões USE no catálogo e no esquema de origem e permissões SELECT na tabela de origem. Para qualquer consulta que atualize ou insira registos na tabela de destino, deve também ter permissões de MODIFY na tabela de origem.
A Databricks recomenda usar clones do Unity Catalog em computação com modo de acesso padrão, pois isto permite alterações independentes de permissões para os alvos de clones superficiais do Unity Catalog e as suas tabelas de fonte.
Utilização VACUUM com clones superficiais do Unity Catalog
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. Executar VACUUM na origem de uma clonagem superficial não danifica 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. No entanto, o suporte a clones superficiais para o Unity Catalog acompanha as relações entre todas as tabelas clonadas e os ficheiros de dados de origem, pelo que os ficheiros válidos são expandidos para incluir ficheiros de dados necessários para devolver consultas tanto para tabelas clonadas superficiais como para a tabela de origem.
Para VACUUM num clone superficial do Unity Catalog, um ficheiro de dados válido é qualquer ficheiro dentro do período de retenção especificado para a tabela de origem ou para qualquer tabela clonada. Tabelas geridas e tabelas externas têm comportamentos ligeiramente diferentes.
Este acompanhamento melhorado dos metadados altera a forma como VACUUM as operações afetam os ficheiros de dados subjacentes para as tabelas Delta Lake, com o seguinte comportamento:
- Para tabelas geridas, as operações
VACUUMquer na origem quer no destino de uma operação de clonagem superficial podem eliminar ficheiros de dados da tabela de origem. - Para tabelas externas,
VACUUMas 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 contra uma única tabela de origem, executar
VACUUMem qualquer uma das tabelas clonadas não removerá arquivos de dados válidos para as outras tabelas clonadas.
Note
A Databricks recomenda que nunca execute VACUUM com uma configuração de retenção inferior a 7 dias, para evitar corromper transações de longa duração ainda em curso. Se precisar de um limiar de retenção mais baixo, considere como VACUUM os clones superficiais no Unity Catalog diferem de como VACUUM afetam outras tabelas clonadas no Azure Databricks. Para mais informações, veja Clonar uma tabela no Azure Databricks.
Mesmo que elimines uma tabela de clone superficial, poderás precisar de acesso SELECT a essa tabela de clone superficial para executar VACUUM na tabela de base. O Databricks lê o log Delta do clone superficial para verificar quais são os ficheiros de dados da tabela base que o clone ainda refere antes de os remover. O Databricks mantém esta ligação durante 7 dias após lançar uma tabela clonada superficial para suportar a UNDROP operação. No modo de acesso padrão, no entanto, esta permissão não é necessária.
Remova a tabela base para um clone superficial
Podes eliminar a tabela base de uma tabela gerida pelo Unity Catalog mesmo quando clones vivos e superficiais ainda a referenciam. Os clones continuam a ler até que os ficheiros de dados da tabela base sejam eliminados, o que os torna inutilizáveis. Pode restaurar a tabela base com UNDROP durante o respetivo período de recuperação, que, por predefinição, é de 7 dias, e esse período pode ser definido ao nível do catálogo ou do esquema para 0 (para desativar a recuperação) ou entre 7 e 30 dias. A configuração do período de recuperação é feita em Pré-visualização Pública. Se não restaurares a tabela, um processo de purga assíncrona apaga os ficheiros de dados dela após o fim do período de recuperação, para que os clones possam continuar a ler durante algum tempo depois de a tabela base deixar de ser recuperável. Para recuperar uma tabela base caída, usa UNDROP.
Note
Algumas áreas de trabalho impõem proteção no momento da eliminação às tabelas base que têm clones rasos. Se DROP TABLE falhar nessa tabela base com o erro CANNOT_DROP_BASE_TABLE_REFERENCED_BY_SHALLOW_CLONE, o seu espaço de trabalho impõe esta proteção. Para eliminar a tabela base ainda assim, use DROP TABLE ... FORCE. Eliminar a tabela base com FORCE interrompe os clones superficiais que fazem referência a ela. Os clones falham em operações que leem dados ou metadados (por exemplo, SELECT, INSERT, UPDATE, DESCRIBE HISTORY, CLONE), mas permanecem visíveis para operações ao nível dos metadados (por exemplo, SHOW TABLES, DROP TABLE) para que possa ser limpos. Esta proteção aplica-se apenas a tabelas geridas pelo Unity Catalog.
Limitations
- A clonagem superficial é suportada apenas para tabelas Delta Lake. Não podes criar um clone raso de uma tabela Iceberg ou de qualquer outra tabela não Delta.
- Não podes usar
CREATE OR REPLACEpara sobrescrever um clone superficial existente. UseDROP TABLEseguido deCREATE TABLE, ou use um novo nome de tabela. - Clones superficiais em tabelas externas devem ser tabelas externas. Clones superficiais em tabelas gerenciadas devem ser tabelas gerenciadas.
- Não podes partilhar clones superficiais usando o OpenSharing.
- Você não pode encadear clones superficiais, o que significa que você não pode criar um clone superficial a partir de outro clone superficial.
- Para tabelas externas,
DROP TABLEnão remove os ficheiros de dados subjacentes, pelo que clones superficiais não são afetados quando a tabela de origem é descartada. - Para tabelas geridas no Databricks Runtime 13.3 LTS e superiores, clones superficiais de uma tabela de origem eliminada continuam a funcionar até que os ficheiros de dados de origem sejam eliminados. Consulte Eliminar a tabela base para um clone superficial.