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

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

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 do Unity.

O Databricks recomenda o uso de tabelas gerenciadas para aproveitar:

  • Redução dos custos de armazenamento e computação.
  • Desempenho de consulta mais rápido em todos os tipos de cliente.
  • Manutenção e otimização automáticas da tabela.
  • Proteger o acesso para clientes que não são do Databricks por meio de APIs abertas.
  • Suporte para formatos Delta Lake e Iceberg.
  • Atualizações automáticas para os recursos mais recentes da plataforma.

As tabelas gerenciadas dão suporte à interoperabilidade permitindo o acesso de clientes Delta Lake e Iceberg. Por meio de APIs abertas e venda automática de credenciais, o Catálogo do Unity permite que mecanismos externos como Trino, DuckDB, Apache Spark, Daft e mecanismos integrados ao catálogo REST do Iceberg, como o Dremio, acessem tabelas gerenciadas. Para clientes externos que não dão suporte a 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 software livre, permite o compartilhamento de dados seguro e controlado com parceiros e plataformas externas.

Você pode trabalhar com tabelas gerenciadas em todas as linguagens e produtos com suporte no Azure Databricks. Você precisa de determinados privilégios para criar, atualizar, excluir ou consultar tabelas gerenciadas. Consulte Gerenciar privilégios no Catálogo do Unity.

Observação

Esta página descreve apenas as tabelas gerenciadas do Catálogo do Unity. Para tabelas gerenciadas no metastore do Hive herdado, consulte objetos de banco de dados no metastore do Hive herdado.

Por que usar tabelas gerenciadas do Catálogo do Unity?

As tabelas gerenciadas do Catálogo do Unity otimizam os custos de armazenamento e as velocidades de consulta e permitem a interoperabilidade com ferramentas de terceiros para Delta Lake e Apache Iceberg. Para simplificar o gerenciamento e o desempenho de dados, essas tabelas gerenciadas usam tecnologias de IA, como compactação de tamanho de arquivo e coleta de estatísticas inteligentes.

Os seguintes recursos são exclusivos para tabelas gerenciadas do Catálogo do Unity e não estão disponíveis para tabelas externas e tabelas estrangeiras:

Característica Benefícios Habilitado por padrão? Configurável?
Confirmações de catálogo Habilita transações com várias instruções em várias tabelas, planejamento de consultas mais rápido ao fornecer metadados diretamente do Unity Catalog, alterações de esquema e de restrições passíveis de aplicação e gravações seguras por mecanismos externos. Não. Sim.
Defina a propriedade da delta.feature.catalogManaged tabela. Consulte Habilitar confirmações de catálogo.
Otimização preditiva A otimização preditiva otimiza automaticamente o layout dos dados e os recursos computacionais usando IA, sem exigir operações manuais de manutenção. O 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 em 11 de novembro de 2024 ou depois de 11 de novembro de 2024.
Para contas atuais, Azure Databricks está gradualmente habilitando a otimização preditiva por padrão. Consulte Verificar se a otimização preditiva está habilitada.
Sim. Consulte Habilitar otimização preditiva.
Transações de várias instruções Permite executar várias instruções SQL em uma ou mais tabelas como uma única confirmação atômica, com garantias ACID. Todas as alterações são bem-sucedidas juntas ou são revertidas juntas. Use em procedimentos armazenados e scripts SQL em cargas de trabalho de armazenamento de dados de missão crítica.
As transações que gravam em tabelas gerenciadas do Delta Lake estão em Visualização Pública.
As transações que gravam em tabelas gerenciadas do Apache Iceberg estão em Versão Prévia Privada.
Não. Sim. Use BEGIN ATOMIC ... END; para transações não interativas ou BEGIN TRANSACTION; ... COMMIT; para transações interativas. Consulte os modos de transação.
Agrupamento líquido automático Para tabelas com otimização predictiva, o clustering líquido automático permite Azure Databricks selecionar chaves de clustering de forma inteligente. À medida que os padrões de consulta mudam, o Azure Databricks atualiza automaticamente as chaves de clustering para melhorar o desempenho e reduzir os custos. Não. Sim. Consulte Habilitar o agrupamento líquido.
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. Sim. Não. O cache de metadados está sempre habilitado para tabelas gerenciadas.
Índices de pesquisa de texto completo Índices de pesquisa de texto completo aceleram buscas por substrings e por palavras-chave em colunas de texto de tabelas gerenciadas. Quando um índice se aplica, Azure Databricks ignora arquivos que não podem conter linhas correspondentes, reduzindo a quantidade de dados verificados.
Os índices de pesquisa de texto completo aceleram as buscas por substrings e por palavras usando as funções search e isearch.
Os índices de pesquisa de texto completo estão em Beta e exigem o Databricks Runtime 18.2 e superior.
Não. Sim. Crie com CREATE INDEX (secundário) ou CREATE SEARCH INDEX (texto completo).
Exclusão automática de arquivo após um DROP TABLE comando Se você DROP uma tabela gerenciada, o Azure Databricks excluirá os dados armazenados na nuvem após 8 dias para reduzir seus custos de armazenamento. Para tabelas externas, você deve excluir manualmente os arquivos do bucket de armazenamento. Sim. Não. Para tabelas gerenciadas, os arquivos são sempre excluídos automaticamente após 8 dias.

Acessar dados do Databricks usando sistemas externos

As tabelas gerenciadas dão suporte à interoperabilidade permitindo o acesso de clientes Delta Lake e Iceberg. Por meio de APIs abertas e distribuição de credenciais, o Catálogo do Unity permite que mecanismos externos, como Trino, DuckDB, Apache Spark, Daft e Iceberg, e mecanismos integrados ao catálogo REST, como Dremio e Snowflake, acessem tabelas gerenciadas. Consulte integrações para obter uma lista de mecanismos externos com suporte ou verifique a documentação do mecanismo se ele não estiver incluído nesta lista.

As seguintes APIs abertas fornecem acesso a sistemas externos às tabelas gerenciadas do Catálogo do Unity:

  • API REST do Unity: Fornece acesso de leitura, gravação e criação para clientes Delta a tabelas Delta gerenciadas.
  • Catálogo REST do Iceberg (IRC): fornece acesso de leitura, gravação e criação para clientes do Iceberg a tabelas Iceberg gerenciadas e acesso somente leitura a tabelas Delta com leituras de Iceberg habilitadas (UniForm).

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

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

Todas as leituras e gravações em tabelas gerenciadas devem usar nomes de tabela e nomes de catálogo e esquema onde eles existem. Por exemplo, catalog_name.schema_name.table_name. Não há suporte para o acesso baseado em caminho às tabelas gerenciadas do Catálogo do Unity (exceto no Modo de Compatibilidade), pois ignora os controles de acesso do Catálogo do Unity e impede que os recursos de tabela gerenciados 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 de espaço reservado:

  • <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>: o nome e o 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 metadados de tabela do Iceberg gerenciados. Essa tarefa é executada usando a computação sem servidor, que tem MODIFY permissões na tabela Iceberg. Essa operação grava apenas nos metadados da tabela e a computação mantém apenas permissões para a tabela durante o trabalho.

Observação

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 gerenciadas com base em resultados de consulta ou operações de gravação do DataFrame. Os artigos a seguir demonstram alguns dos muitos padrões que você pode usar para criar uma tabela gerenciada no Azure Databricks:

Remover uma tabela gerenciada

Para remover uma tabela gerenciada, você deve ter:

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

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

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

O Catálogo do Unity dá suporte ao 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 locatário de nuvem e remove arquivos durante a manutenção automatizada da tabela. Consulte UNDROP.