Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 cria uma camada de abstração que permite transações ACID sobre seus dados no armazenamento de objetos.
Azure Databricks dá suporte a tabelas Iceberg que usam o formato de arquivo Apache Parquet e as versões 1, 2 e 3 da especificação iceberg. Iceberg mantém a atomicidade e a consistência escrevendo novos arquivos de metadados para cada alteração de tabela. Todas as tabelas Iceberg no Azure Databricks seguem a especificação do formato de tabela Iceberg aberta. Consulte a especificação da tabela Iceberg.
Um catálogo de Iceberg é a camada de nível superior da arquitetura da tabela Iceberg que retorna os metadados atuais ao carregar uma tabela. O catálogo do Iceberg lida com operações como criar, remover e renomear tabelas.
Azure Databricks dá suporte a tabelas iceberg gerenciadas por:
- Catálogo do Unity
- Catálogos estrangeiros, como AWS Glue, metastore do Hive ou Snowflake Horizon Catalog
Requisitos
Você deve atender aos seguintes requisitos:
- Um espaço de trabalho com o Catálogo do Unity habilitado.
- Use o Databricks Runtime 16.4 LTS ou superior para tabelas Iceberg gerenciadas e tabelas Iceberg externas.
Criar tabelas do Iceberg no Catálogo do Unity
As tabelas Iceberg que você cria no Unity Catalog são tabelas Iceberg gerenciadas. Você pode criar estas tabelas usando:
- Databricks Runtime ou SQL do Databricks
- Mecanismos externos compatíveis com Iceberg que dão suporte à API do Catálogo REST do Iceberg, como Apache Spark, Flink, Trino ou Kafka. Consulte as tabelas do Azure Databricks a partir de clientes do Apache Iceberg.
As tabelas iceberg gerenciadas são totalmente integradas aos recursos da plataforma 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 as operações para reduzir os custos de armazenamento e melhorar a velocidade da consulta.
- As tabelas de Iceberg gerenciadas também dão suporte a exibições materializadas e tabelas de streaming.
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. Azure Databricks usa Lakehouse Federation para recuperar metadados e ler a tabela do armazenamento de objetos.
As tabelas iceberg estrangeiras são somente leitura em Azure Databricks e têm suporte limitado à 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 as tabelas do Azure Databricks a partir de clientes do 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.
Aviso
Não há suporte para venda automática de credenciais em workspaces que usam o armazenamento padrão. Confira Limitações.
Evolução da partição
Com a evolução da partição, você pode alterar o esquema de particionamento de uma tabela do Apache Iceberg existente sem reescrever dados. Novos dados são gravados com o layout de partição atualizado e os dados existentes retêm seu layout de partição original. O Apache Iceberg rastreia as especificações de partição e aplica o filtro correto no momento da consulta. Confira a evolução da partição para Apache Iceberg.
Observação
A evolução da partição é suportada em tabelas gerenciadas do Iceberg por meio de mecanismos externos do Iceberg utilizando o Catálogo REST do Iceberg, mas não por meio do Databricks SQL. Transformações de partição baseadas em expressão, como years() e bucket() não têm suporte para tabelas de Iceberg gerenciadas. Confira Limitações.
Para configurar o acesso externo, consulte Acessar tabelas do Azure Databricks de clientes Apache Iceberg.
Os exemplos a seguir mostram como usar a evolução da partição com o Spark SQL e a extensão Iceberg. Para obter a sintaxe de evolução da partição do Apache Iceberg e as transformações com suporte, consulte a DDL do Apache Iceberg Spark.
Adicionar um campo de partição
Para adicionar um novo campo de partição a uma tabela existente:
ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;
Remover um campo de partição
Para remover um campo de partição existente de uma tabela:
ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;
Substituir um campo de partição
Para trocar um campo de partição por outro sem uma repartição intermediária:
ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;
Limitações
As seguintes limitações se aplicam às tabelas iceberg em Azure Databricks e estão sujeitas a alterações:
- As tabelas iceberg dão suporte apenas ao formato de arquivo Apache Parquet.
- Para o Iceberg v2, não há suporte para exclusões de posição e exclusões baseadas em igualdade. Em vez disso, o Azure Databricks dá suporte a vetores de exclusão do Iceberg v3 para exclusões em 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
BINARYtipo.
- Views não são acessíveis por mecanismos externos do Iceberg.
- Não há suporte para os seguintes tipos de dados:
UUIDFixed(L)TIME- Aninhado
STRUCTcom campos necessários
- Para limitações específicas do Iceberg v3, consulte Limitações.
Limitações das tabelas gerenciadas do Iceberg
As seguintes limitações se aplicam especificamente às tabelas de Iceberg gerenciadas:
- Não há suporte para a pesquisa de vetor. Consulte a Pesquisa de Vetor.
- Se você usar tabelas de Iceberg gerenciadas como fonte para tabelas sincronizadas para o Lakebase, o processamento incremental com o feed de dados de alteração automática não terá suporte.
- 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.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.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(). - Recursos sem suporte no Apache Iceberg também não estão disponíveis para tabelas de Iceberg gerenciadas. Isso inclui colunas geradas do Delta Lake, Restrições no Azure Databricks e suporte de Ordenação para o Delta Lake.
Limitações da tabela do Iceberg Estrangeiro
As seguintes limitações se aplicam especificamente a tabelas de Iceberg estrangeiras:
- A viagem no tempo tem suporte apenas para instantâneos de Iceberg que foram lidos anteriormente em Azure Databricks (ou seja, instantâneos em que uma instrução
SELECTfoi executada). - 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 em 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 TABLEnas tabelas do Iceberg exigemALL PRIVILEGES.