Compartilhar via


O que é o Apache Iceberg no Azure Databricks?

Important

As tabelas Iceberg gerenciadas pelo Catálogo do Unity estão disponíveis na Visualização Pública no Databricks Runtime 16.4 LTS e posteriores. As tabelas do Iceberg Externo também estão em Versão Preliminar Pública no Databricks Runtime 16.4 LTS ou posterior.

Os recursos do Iceberg v3 estão disponíveis em Beta no Databricks Runtime 17.3 e superior. Consulte Usar recursos do Apache Iceberg v3.

O Apache Iceberg é um formato de tabela de software livre para cargas de trabalho de análise. Ele dá suporte a recursos como evolução do esquema, viagem no tempo e particionamento oculto. Assim como o Delta Lake, o Iceberg fornece uma camada de abstração que permite transações ACID em dados armazenados no armazenamento de objetos. O Azure Databricks dá suporte a tabelas Iceberg que usam o formato de arquivo Apache Parquet. Iceberg mantém a atomicidade e a consistência escrevendo novos arquivos de metadados para cada alteração de tabela.

Um catálogo de Iceberg é a camada de nível superior da arquitetura da tabela Iceberg. Ele lida com operações como criar, remover e renomear tabelas. Sua principal responsabilidade é fornecer os metadados atuais quando uma tabela é carregada. O Azure Databricks dá suporte a tabelas iceberg gerenciadas por:

Todas as tabelas Iceberg no Azure Databricks seguem a especificação de formato de tabela Iceberg aberto. Veja a especificação da tabela Iceberg.

Criar tabelas do Iceberg no Catálogo do Unity

As tabelas de iceberg criadas no Catálogo do Unity são tabelas iceberg gerenciadas. Você pode criar estas tabelas usando:

As tabelas iceberg gerenciadas são totalmente integradas aos recursos da plataforma do Azure Databricks. O Catálogo Unity gerencia tarefas do ciclo de vida, como expiração de snapshots e compactação de arquivos nessas tabelas. As tabelas do Iceberg gerenciadas também dão suporte ao clustering líquido, o que melhora o desempenho das consultas. A otimização preditiva automatiza essas tarefas para reduzir os custos de armazenamento e melhorar a velocidade da consulta. O Databricks recomenda usar clientes Iceberg 1.9.2 e superiores para ler e gravar no Catálogo do Unity.

Ler tabelas Iceberg gerenciadas por outros catálogos

Uma tabela Iceberg externa é uma tabela Iceberg gerenciada por um catálogo fora do Catálogo Unity. O catálogo externo armazena os metadados atuais da tabela. O Azure Databricks usa a Lakehouse Federation para recuperar metadados e ler a tabela do armazenamento de objetos.

As tabelas do Iceberg Estrangeiro são somente leitura no Azure Databricks e têm suporte limitado pela plataforma.

Acessar tabelas Iceberg usando sistemas externos

Você pode acessar todas as tabelas do Iceberg no Catálogo do Unity usando a API do Catálogo REST do Iceberg. Essa API aberta dá suporte a operações de leitura e gravação de mecanismos externos do Iceberg em diferentes linguagens e plataformas. Consulte Acesso a tabelas do Azure Databricks de clientes Apache Iceberg.

O Catálogo REST dá suporte à venda automática de credenciais, que fornece credenciais temporárias para mecanismos externos para acessar o armazenamento subjacente. Para obter mais informações, consulte Fornecimento de credenciais do Catálogo do Unity para acesso a sistemas externos.

Limitações de tabela do Iceberg

As seguintes limitações se aplicam às tabelas iceberg no Azure Databricks e estão sujeitas a alterações:

  • As tabelas iceberg dão suporte apenas ao formato de arquivo Apache Parquet.
  • O Azure Databricks dá suporte às versões 1, 2 e 3 da especificação iceberg.
    • Para limitações específicas da v3, consulte Limitações.
  • Não há suporte para exclusões de posição do Iceberg v2 e exclusões baseadas em igualdade. Em vez disso, o Azure Databricks dá suporte a vetores de exclusão Iceberg v3 para exclusões no nível de linha.
  • A criação de ramificações e marcações não tem suporte. Somente a ramificação principal é acessível ao ler tabelas de Iceberg Estrangeiro.
  • Particionamento:
    • A evolução da partição tem suporte apenas em tabelas do Iceberg gerenciadas durante a interação com mecanismos do Iceberg externos.
    • Tabelas de Iceberg estrangeiras não dão suporte à evolução da partição.
    • Não há suporte para particionamento por BINARY tipo.
  • Não há suporte para os seguintes tipos de dados:
    • UUID
    • Fixed(L)
    • TIME
    • Aninhado STRUCT com campos necessários
  • As tabelas iceberg gerenciadas não dão suporte a restrições de chave primária ou chave estrangeira.

Limitações das tabelas gerenciadas do Iceberg

As seguintes limitações se aplicam especificamente às tabelas de Iceberg gerenciadas:

  • Não há suporte para filtros de linha e máscaras de coluna.
  • Não há suporte para a pesquisa de vetor.
  • O Iceberg não dá suporte ao feed de dados de alterações. Como resultado, o processamento incremental não é suportado ao ler tabelas de Iceberg gerenciadas como uma fonte para:
    • Visões materializadas e tabelas de fluxo
    • Criação de perfil de dados
    • Tabelas online
    • Lakebase
    • Classificação de dados
  • As tabelas de Iceberg gerenciadas só poderão ser criadas se a otimização preditiva estiver habilitada para manutenção de tabela.
  • As seguintes propriedades de tabela são gerenciadas pelo Catálogo do Unity e não podem ser definidas manualmente:
    • write.location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • Não há suporte para o codec de compressão para modificar a compressão de tabelas. Todas as tabelas usam zstd por padrão.
  • Não há suporte para particionamento por expressões (por exemplo, years(), months(), days(), hours(), ) bucket().

Limitações da tabela do Iceberg Estrangeiro

As seguintes limitações se aplicam especificamente a tabelas de Iceberg estrangeiras:

  • O suporte a viagem no tempo é fornecido apenas para instantâneos de Iceberg que foram lidos anteriormente no Azure Databricks (ou seja, instantâneos em que um SELECT comando foi executado).
  • O uso de funções de transformação de compartimentos para particionamento do Iceberg pode prejudicar o desempenho das consultas quando filtros condicionais são usados.
  • Produtos de hierarquização de armazenamento em nuvem, como o Amazon S3, não são integrados a tabelas Iceberg externas. Acessar tabelas de Iceberg estrangeiras no Azure Databricks pode restaurar dados arquivados em camadas de armazenamento de menor custo.
  • Em clusters de modo de acesso dedicado, as leituras e as operações REFRESH FOREIGN TABLE nas tabelas do Iceberg exigem ALL PRIVILEGES.