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.
Important
As tabelas Iceberg gerenciadas pelo Unity Catalog estão disponíveis no Public Preview no Databricks Runtime 16.4 LTS e superior. As tabelas Foreign Iceberg também estão em visualização pública no Databricks Runtime 16.4 LTS e superior.
As funcionalidades do Iceberg v3 estão disponíveis em Pré-visualização Pública no Databricks Runtime 18.0 e superiores. Consulte Usar recursos do Apache Iceberg v3.
Apache Iceberg é um formato de tabela open-source para cargas de trabalho analíticas. Ele suporta recursos como evolução de esquema, viagem no tempo e particionamento oculto. 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 suporta tabelas Iceberg que utilizam o formato de ficheiro Apache Parquet. O Iceberg mantém a atomicidade e a consistência escrevendo novos arquivos de metadados para cada alteração na tabela.
Um catálogo Iceberg é a camada superior da arquitetura de tabela Iceberg. Ele lida com operações como criar, eliminar e renomear tabelas. Sua principal responsabilidade é fornecer os metadados atuais quando uma tabela é carregada. Azure Databricks suporta tabelas Iceberg geridas por:
- Catálogo Unity
- Catálogos estrangeiros, como AWS Glue, Hive Metastore ou Snowflake Horizon Catalog
Todas as tabelas Iceberg no Azure Databricks seguem a especificação do formato de tabela Iceberg aberta. Veja a especificação da tabela Iceberg.
Criar tabelas Iceberg no Catálogo Unity
As tabelas Iceberg criadas no Unity Catalog são tabelas Iceberg gerenciadas. Você pode criar essas tabelas usando:
- Databricks Runtime ou Databricks SQL
- Mecanismos externos compatíveis com Iceberg que suportam a API do Catálogo REST do Iceberg, como Apache Spark, Flink, Trino ou Kafka. Consulte Acesse tabelas do Azure Databricks a partir de clientes Apache Iceberg.
As tabelas Iceberg geridas estão totalmente integradas com as funcionalidades da plataforma Azure Databricks. O Unity Catalog gerencia tarefas do ciclo de vida, como expiração de instantâneos e compactação de arquivos nessas tabelas. As tabelas Iceberg gerenciadas também suportam clustering líquido, o que melhora o desempenho da consulta. A otimização preditiva automatiza essas tarefas para reduzir os custos de armazenamento e melhorar a velocidade da consulta. A Databricks recomenda o uso de clientes Iceberg 1.9.2 e superiores para ler e gravar no Unity Catalog.
Leia tabelas Iceberg gerenciadas por outros catálogos
Uma mesa Iceberg externa é uma mesa Iceberg gerida por um catálogo fora do Unity Catalog. O catálogo externo armazena os metadados atuais da tabela. Azure Databricks utiliza Lakehouse Federation para recuperar metadados e ler a tabela a partir do armazenamento de objetos.
As tabelas Iceberg externas são apenas de leitura no Azure Databricks e têm suporte limitado na plataforma.
Aceder a tabelas Iceberg usando sistemas externos
Você pode acessar todas as tabelas do Iceberg no Catálogo Unity usando a API do Catálogo REST do Iceberg. Esta API aberta suporta operações de leitura e escrita a partir de motores Iceberg externos em diferentes idiomas e plataformas. Consulte Acesse tabelas do Azure Databricks a partir de clientes Apache Iceberg.
O Catálogo REST oferece suporte à venda de credenciais, que fornece credenciais temporárias a mecanismos externos para acessar o armazenamento subjacente. Para obter mais informações, consulte Venda automática de credenciais do Unity Catalog para acesso externo ao sistema.
Advertência
A venda automática de credenciais não é suportada em espaços de trabalho que utilizam armazenamento padrão. Consulte Limitações.
Evolução da partição
Com a evolução de partições, pode alterar o esquema de particionamento de uma tabela Apache Iceberg existente sem reescrever os dados. Os novos dados são escritos com o layout atualizado das partições e os dados existentes mantêm o layout original da partição. O Apache Iceberg acompanha as especificações da partição e aplica o filtro correto no momento da consulta. Ver evolução de partições no Apache Iceberg.
Observação
A evolução de partições é suportada em tabelas Iceberg geridas através de motores Iceberg externos usando o Iceberg REST Catalog, mas não através do SQL do Databricks. Transformações de partição baseadas em expressões, como years() e bucket() não são suportadas para tabelas Iceberg geridas. Veja as limitações da tabela Iceberg.
Para configurar o acesso externo, consulte Acesso às tabelas do Azure Databricks a partir de clientes Apache Iceberg.
Os exemplos seguintes mostram como usar evolução de partições com Spark SQL e a extensão Iceberg. Para a sintaxe da evolução da partição do Apache Iceberg e transformações suportadas, consulte Apache Iceberg Spark DDL.
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 intermédia:
ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;
Limitações da tabela Iceberg
As seguintes limitações aplicam-se às tabelas Iceberg no Azure Databricks e estão sujeitas a alterações:
- As tabelas Iceberg suportam apenas o formato de arquivo Apache Parquet.
- O Azure Databricks suporta as 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 suporta vetores de eliminação Iceberg v3 para eliminações ao nível da linha.
- A ramificação e a marcação não são suportadas. Apenas a ramificação principal está acessível ao ler tabelas estrangeiras de Iceberg.
- Particionamento:
- A evolução da partição é suportada em tabelas Iceberg geridas somente quando se interage por motores Iceberg externos.
- As tabelas Iceberg estrangeiras não suportam a evolução de partições.
- Não há suporte para particionamento por
BINARYtipo.
- As visualizações não são suportadas.
- Os seguintes tipos de dados não são suportados:
UUIDFixed(L)TIME- Aninhado
STRUCTcom campos obrigatórios
Limitações da tabela Iceberg gerenciada
As seguintes limitações aplicam-se especificamente às tabelas Iceberg gerenciadas:
- A pesquisa vetorial não é suportada.
- O Iceberg não suporta feed de mudança de dados. Como resultado, o processamento incremental não é suportado ao ler tabelas gerenciadas do Iceberg como fonte para:
- Visualizações materializadas e tabelas de streaming
- Definição de perfis de dados
- Tabelas online
- Lakebase
- Classificação dos dados
- As tabelas Iceberg gerenciadas só podem ser criadas se a otimização preditiva estiver habilitada para manutenção de tabelas.
- As seguintes propriedades de tabela são gerenciadas pelo Unity Catalog e não podem ser definidas manualmente:
write.location-provider.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.delete.format.default
- O codec de compressão para alterar a compressão de tabela não é suportado. Todas as tabelas usam Zstd por padrão.
- A partição por expressões (por exemplo,
years(),months(),days(),hours(),bucket()) não é suportada. - Funcionalidades não suportadas no Apache Iceberg também não estão disponíveis para tabelas Iceberg geridas. Isto inclui colunas geradas por Delta Lake, Restrições sobre Azure Databricks e suporte Collation para Delta Lake.
Limitações da tabela Foreign Iceberg
As seguintes limitações aplicam-se especificamente às tabelas Iceberg externas:
- A viagem no tempo é suportada apenas para instantâneos de Iceberg que já foram lidos anteriormente em Azure Databricks (ou seja, instantâneos onde foi executada uma instrução
SELECT). - O uso de funções de transformação de bucket para particionamento no Iceberg pode degradar o desempenho das consultas quando são usados filtros condicionais.
- Produtos de armazenamento em nuvem com hierarquização, como o Amazon S3, não são integrados a tabelas Iceberg de origem externa. Aceder a tabelas Iceberg estrangeiras no Azure Databricks pode restaurar dados arquivados em camadas de armazenamento de menor custo.
- Em clusters de modo de acesso dedicado, operações e leituras em tabelas do Iceberg exigem
REFRESH FOREIGN TABLE.