Tabelas gerenciadas do Unity Catalog no Azure Databricks para Delta Lake e Apache Iceberg

Esta página descreve as tabelas gerenciadas do Catálogo Unity no Delta Lake e no Apache Iceberg, o tipo de tabela padrão e recomendado no Azure Databricks. Essas tabelas são totalmente controladas e otimizadas pelo Unity Catalog, oferecendo desempenho, vantagens operacionais e menores custos de armazenamento e computação em comparação com tabelas externas e estrangeiras, porque as tabelas gerenciadas aprendem com seus padrões de leitura e gravação. O Unity Catalog gerencia todas as responsabilidades de leitura, gravação, armazenamento e otimização para tabelas gerenciadas. Veja Converter uma tabela Delta externa numa tabela Unity Catalog gerida.

Os arquivos de dados para tabelas gerenciadas são armazenados no esquema ou catálogo que os contém. Consulte Especificar um local de armazenamento gerenciado no Catálogo Unity.

O Databricks recomenda o uso de tabelas gerenciadas para aproveitar:

  • Custos reduzidos de armazenamento e computação.
  • Desempenho de consulta mais rápido em todos os tipos de clientes.
  • Manutenção e otimização automática de tabelas.
  • Acesso seguro para clientes que não são Databricks através de APIs abertas.
  • Suporte para os formatos Delta Lake e Iceberg.
  • Atualizações automáticas para os recursos mais recentes da plataforma.

As tabelas gerenciadas suportam a interoperabilidade, permitindo o acesso dos clientes Delta Lake e Iceberg. Por meio de APIs abertas e distribuição de credenciais, o Unity Catalog permite que mecanismos externos, como Trino, DuckDB, Apache Spark, Daft e mecanismos integrados ao catálogo Iceberg REST, como o Dremio, acessem tabelas geridas. Para clientes externos que não suportam APIs abertas, você pode usar o Modo de Compatibilidade para ler tabelas gerenciadas usando qualquer cliente Delta Lake ou Iceberg. O Delta Sharing, um protocolo de código aberto, permite o compartilhamento seguro e controlado de dados com parceiros e plataformas externas.

Pode trabalhar com tabelas geridas em todos os idiomas e produtos suportados no Azure Databricks. Você precisa de certos privilégios para criar, atualizar, excluir ou consultar tabelas gerenciadas. Consulte Gerenciar privilégios no Catálogo Unity.

Note

Esta página descreve apenas tabelas geridas pelo Unity Catalog. Para tabelas gerenciadas no metastore herdado do Hive, consulte Objetos de banco de dados no metastore herdado do Hive.

Por que usar tabelas gerenciadas do Unity Catalog?

As tabelas geridas do Unity Catalog otimizam custos de armazenamento e velocidades de consulta, permitindo a interoperabilidade com ferramentas de terceiros para Delta Lake e Apache Iceberg. Para simplificar a gestão e o desempenho dos dados, estas tabelas geridas utilizam tecnologias baseadas em IA, como a compactação do tamanho dos ficheiros e a recolha inteligente de estatísticas.

As seguintes funcionalidades são exclusivas das tabelas geridas pelo Unity Catalog e não estão disponíveis para tabelas externas e estrangeiras:

Feature Benefits Ativado por predefinição? Configurável?
Catálogo de commits Permite transações com múltiplas instruções em várias tabelas, um planeamento de consultas mais rápido ao disponibilizar metadados diretamente a partir do Unity Catalog, alterações de esquema e de restrições passíveis de imposição e gravações seguras a partir de motores externos. Não. Yes.
Defina a propriedade delta.feature.catalogManaged da tabela. Veja Ativar commits do catálogo.
Otimização preditiva A otimização preditiva otimiza automaticamente o layout e o cálculo dos seus dados usando IA, sem exigir operações manuais de manutenção. A Databricks recomenda habilitar a otimização preditiva para todas as tabelas gerenciadas para reduzir os custos de armazenamento e computação.
A otimização preditiva é executada automaticamente:
Sim, para todas as novas contas criadas a partir de 11 de novembro de 2024.
Para as contas atuais, o Azure Databricks está gradualmente a ativar a otimização preditiva por defeito. Veja Verificar se a otimização preditiva está ativada.
Yes. Consulte Ativar otimização preditiva.
Transações com múltiplos extratos Permite executar múltiplas instruções SQL em uma ou mais tabelas numa única confirmação atómica, com garantias ACID. Todas as mudanças têm sucesso em conjunto ou revertem em conjunto. Utilize para procedimentos armazenados e scripts SQL em cargas de trabalho de armazenamento de dados de missão crítica.
As transações que escrevem para tabelas geridas da Delta Lake encontram-se em Pré-visualização Pública.
As transações que escrevem para tabelas Apache Iceberg geridas encontram-se em Pré-visualização Privada.
Não. Yes. Use BEGIN ATOMIC ... END; para transações não interativas ou BEGIN TRANSACTION; ... COMMIT; para transações interativas. Veja Modos de transação.
Agrupamento automático de líquidos Para tabelas com otimização preditiva, o agrupamento líquido automático permite ao Azure Databricks selecionar inteligentemente as chaves de agrupamento. À medida que os padrões de consulta mudam, o Azure Databricks atualiza automaticamente as chaves de cluster para melhorar o desempenho e reduzir os custos. Não. Yes. Consulte Ativar agrupamento de líquidos.
Cache de metadados O cache na memória de metadados de transação melhora o desempenho da consulta minimizando as solicitações para o log de transações armazenado na nuvem. Yes. Não. O cache de metadados está sempre habilitado para tabelas gerenciadas.
Índices de pesquisa em texto completo Os índices de pesquisa em texto completo aceleram pesquisas de subcadeias e de palavras-chave nas colunas de texto das tabelas geridas. Quando um índice se aplica, o Azure Databricks ignora ficheiros que não conseguem conter linhas correspondentes, reduzindo a quantidade de dados digitalizados.
Os índices de pesquisa de texto completo aceleram as pesquisas de subcadeias e palavras usando as funções search e isearch.
Os índices de pesquisa em texto completo estão em Beta e requerem Databricks Runtime 18.2 e superiores.
Não. Yes. Criar com CREATE INDEX (secundário) ou CREATE SEARCH INDEX (texto completo).
Exclusão automática de arquivos após um DROP TABLE comando Se executar o comando DROP sobre uma tabela gerida, o Azure Databricks apaga os dados do armazenamento na nuvem após 8 dias para reduzir os seus custos de armazenamento. Para tabelas externas, tens de apagar manualmente os ficheiros do teu bucket de armazenamento. Yes. Não. Para tabelas gerenciadas, os arquivos são sempre excluídos automaticamente após 8 dias.

Acessar dados Databricks usando sistemas externos

As tabelas gerenciadas suportam a interoperabilidade , permitindo o acesso dos clientes Delta Lake e Iceberg. Por meio de APIs abertas e troca de credenciais, o Unity Catalog permite que motores externos, como Trino, DuckDB, Apache Spark, Daft e mecanismos integrados em catálogos REST, como Iceberg, Dremio e Snowflake, acessem tabelas geridas. Consulte integrações para obter uma lista de mecanismos externos suportados ou verifique a documentação do mecanismo se ele não estiver incluído nessa lista.

As APIs abertas a seguir fornecem acesso a sistemas externos às tabelas gerenciadas do Unity Catalog:

  • Unity REST API: Fornece leitura, escrita e criação de acesso para clientes Delta a tabelas Delta geridas.
  • Iceberg REST Catalog (IRC): Fornece acesso de leitura, escrita e criação para clientes Iceberg a tabelas Iceberg geridas e acesso apenas de leitura a tabelas Delta com leituras Iceberg ativadas (UniForm).

Ambas as APIs dão suporte à distribuição de credenciais, que fornece credenciais temporárias específicas que herdam os privilégios da entidade solicitante do Azure Databricks, mantendo controles de governança e segurança.

Além disso, o Delta Sharing é um protocolo de código aberto que permite o acesso seguro e controlado a dados de parceiros e plataformas externas. Você pode usar o Delta Sharing para conceder acesso temporário de leitura apenas aos parceiros.

Todas as leituras e gravações em tabelas gerenciadas devem usar nomes de tabelas e nomes de catálogo e esquema, onde existirem. Por exemplo, catalog_name.schema_name.table_name. O acesso baseado em caminho às tabelas gerenciadas do Unity Catalog não é suportado (exceto no Modo de Compatibilidade) porque ignora os controles de acesso do Unity Catalog e impede que os recursos da tabela gerenciada funcionem corretamente.

Criar uma tabela gerenciada

Para criar uma tabela gerenciada, você deve ter:

  • USE SCHEMA no esquema pai da tabela.
  • USE CATALOG no catálogo pai da tabela.
  • CREATE TABLE no esquema pai da tabela.

Use a sintaxe SQL a seguir para criar uma tabela gerenciada vazia usando SQL. Substitua os valores dos espaços reservados:

  • <catalog-name>: O nome do catálogo que conterá a tabela.
  • <schema-name>: O nome do esquema que contém a tabela.
  • <table-name>: Um nome para a tabela.
  • <column-specification>: Nome e tipo de dados de cada coluna.
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

Para manter o desempenho em leituras e gravações, o Azure Databricks executa periodicamente operações para otimizar os metadados gerenciados da tabela Iceberg. Esta tarefa é executada usando computação sem servidor, que tem MODIFY permissões na tabela Iceberg. Esta operação grava apenas nos metadados da tabela, e a computação mantém as permissões para a tabela durante a execução da tarefa.

Note

Para criar uma tabela Iceberg, especifique USING icebergexplicitamente . Caso contrário, o Azure Databricks criará uma tabela Delta Lake por padrão.

Você pode criar tabelas geridas a partir de resultados de consulta ou operações de escrita no DataFrame. Os artigos a seguir demonstram alguns dos muitos padrões que você pode usar para criar uma tabela gerenciada no Azure Databricks:

Eliminar uma tabela gerida

Para soltar uma tabela gerenciada, você deve ter:

  • MANAGE na mesa ou você deve ser o dono da mesa.
  • USE SCHEMA no esquema pai da tabela.
  • USE CATALOG no catálogo pai da tabela.

Para soltar uma tabela gerenciada, execute o seguinte comando SQL:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

O Unity Catalog suporta o UNDROP TABLE comando para recuperar tabelas gerenciadas descartadas por 8 dias. Após 8 dias, o Azure Databricks marca os dados subjacentes para exclusão do seu locatário de nuvem e remove arquivos durante a manutenção automatizada da tabela. Ver UNDROP.