O que é o Apache Iceberg na Databricks?
Pré-visualização pública
As tabelas do Unity Catalog-gerenciar Iceberg estão disponíveis em Public Preview em Databricks Runtime 16.4 LTS e acima. As tabelas estrangeiras Iceberg também estão em Public Preview em Databricks Runtime 16.4 LTS e acima.
Os recursos Iceberg v3 estão disponíveis em versão prévia pública no Databricks Runtime 18.0 e versões superiores. Consulte Usar recurso Apache Iceberg v3.
Apache Iceberg é um formato de tabela de código aberto para cargas de trabalho analíticas. Suporta recursos como evolução do esquema, viagem do 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 em armazenamento de objetos. O Databricks oferece suporte a tabelas Iceberg que utilizam o formato de arquivo Apache Parquet. O Iceberg mantém a atomicidade e a consistência ao gravar novos arquivos de metadados para cada alteração na tabela.
Um catálogo Iceberg é a camada de nível superior da arquitetura da tabela Iceberg. Ele lida com operações como criação, eliminação e renomeação de tabelas. Sua principal responsabilidade é fornecer os metadados atuais quando uma tabela é carregada. Databricks suporta Iceberg tabelas gerenciar por:
- Unity Catalog
- Catálogos externos, como AWS Glue, Hive metastore ou Snowflake Horizon Catalog.
Todas as tabelas Iceberg no Databricks seguem a especificação de formato de tabela Iceberg aberta. Consulte a especificação da tabela Iceberg.
Criar tabelas Iceberg no Unity Catalog
Iceberg As tabelas criadas em Unity Catalog são gerenciadas por Iceberg. Você pode criar essas tabelas usando:
- Databricks Runtime ou Databricks SQL
- Mecanismos externos compatíveis com o Iceberg que suportam a API do catálogo REST do Iceberg, como Apache Spark, Flink, Trino ou Kafka. Consulte Acessar tabelas do Databricks a partir de clientes do Apache Iceberg.
gerenciar tabelas Iceberg são totalmente integradas com o recurso da plataforma Databricks . Unity Catalog gerencia tarefas de ciclo de vida, como expiração de instantâneos e compactação de arquivos nessas tabelas. gerenciar tabelas Iceberg também suportam clusteringlíquido, o que melhora o desempenho da consulta. A otimização preditiva automatiza essas tarefas para reduzir custos de armazenamento e melhorar a velocidade das consultas. Databricks recomenda usar os clientes Iceberg 1.9.2 e acima para ler e gravar no Unity Catalog.
Leia Iceberg tables gerenciar por outros catálogos
Uma tabela estrangeira Iceberg é uma tabela Iceberg gerenciada por um catálogo fora de Unity Catalog. O catálogo externo armazena os metadados atuais da tabela. Databricks usa a Lakehouse Federation para recuperar metadados e ler a tabela do armazenamento de objetos.
As tabelas Foreign Iceberg são somente leitura no Databricks e têm suporte limitado à plataforma.
Acesse as tabelas Iceberg usando sistemas externos.
O senhor pode acessar todas as tabelas do Iceberg no Unity Catalog usando a API REST Catalog do Iceberg. Essa API aberta oferece suporte a operações de leitura e gravação de mecanismos Iceberg externos em diferentes idiomas e plataformas. Consulte Acessar tabelas do Databricks a partir de clientes do 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 Unity Catalog credential vending for external system access.
A distribuição de credenciais não é compatível com espaços de trabalho que utilizam o armazenamento default . Consulte as limitações.
Evolução da partição
Com a evolução de partições, você pode alterar o esquema de particionamento de uma tabela existente do Apache Iceberg sem sobrescrever os dados. Novos dados são gravados com a disposição de partição atualizada e os dados existentes mantêm sua disposição de partição original. O Apache Iceberg rastreia as especificações de partição e aplica o filtro correto no momento da consulta. Veja a evolução das partições para o Apache Iceberg.
A evolução de partições é suportada no gerenciamento de tabelas Iceberg por meio de mecanismos Iceberg externos usando o Catálogo REST Iceberg , mas não por meio Databricks SQL. Transformações de partição baseadas em expressões, como years() e bucket() não são suportadas para gerenciar tabelas Iceberg . Consulte as limitações da tabela Iceberg.
Para configurar o acesso externo, consulte Acessar tabelas do Databricks a partir de clientes Apache Iceberg.
Os exemplos a seguir mostram como usar a evolução de partições com o Spark SQL e a extensão Iceberg. Para obter informações sobre a sintaxe de evolução de partições do Apache Iceberg e as 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;
Solte 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;
Substitua um campo de partição
Para swap 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 da tabela Iceberg
As seguintes limitações se aplicam às tabelas Iceberg no Databricks e estão sujeitas a alterações:
-
As tabelas do Iceberg suportam apenas o formato de arquivo Apache Parquet.
-
O Databricks é compatível com as versões 1, 2 e 3 da especificação Iceberg.
- Para limitações específicas da versão 3, consulte Limitações.
-
Exclusões de posição e exclusões baseadas em igualdade no Iceberg v2 não são suportadas. Em vez disso, o Databricks oferece suporte a vetores de exclusão Iceberg v3 para exclusões em nível de linha.
-
A ramificação e a marcação não são suportadas. Somente o ramo principal pode ser acessado ao ler tabelas Iceberg estrangeiras.
-
Particionamento:
- A evolução da partição é suportada nas tabelas do gerenciar Iceberg somente ao interagir com mecanismos externos do Iceberg.
- As tabelas Iceberg estrangeiras não suportam a evolução da partição.
- O particionamento por tipo
BINARYnão é suportado.
-
As visualizações não são suportadas.
-
Os seguintes tipos de dados não são suportados:
UUIDFixed(L)TIMESTRUCTaninhado com campos obrigatórios
gerenciar Iceberg limitações da tabela
As limitações a seguir se aplicam especificamente às tabelas do gerenciar Iceberg:
-
A busca vetorial não é suportada.
-
O Iceberg não suporta o feed de dados de alterações. Consequentemente, o processamento incremental não é suportado ao ler tabelas Iceberg gerenciadas como fonte para:
- Visualização materializada e tabelas de transmissão
- perfil de dados
- Tabelas online
- Lakebase
- Classificação de dados
-
gerenciar tabelas Iceberg só podem ser criadas se a otimização preditiva estiver habilitada para manutenção de tabelas.
-
As seguintes propriedades da 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 da tabela não é compatível. Todas as tabelas usam Zstd por default.
-
O particionamento por expressões (por exemplo,
years(),months(),days(),hours(),bucket()) não é suportado. -
Recursos não são suportados no Apache Iceberg e também não estão disponíveis para gerenciar tabelas Iceberg . Isso inclui colunas geradas pelo Delta Lake, restrições no Databricks e suporte a agrupamento para o Delta Lake.
Limitações da tabela Iceberg estrangeira
As limitações a seguir se aplicam especificamente a tabelas Iceberg estrangeiras:
- A viagem do tempo é suportada somente para Iceberg Snapshot que tenha sido lido anteriormente em Databricks (ou seja, Snapshot em que uma instrução
SELECTfoi executada). - O uso de funções de transformação de balde para o particionamento do Iceberg pode prejudicar o desempenho da consulta quando são usados filtros condicionais.
- Os produtos de classificação por níveis de armazenamento em nuvem, como Amazon S3 , não estão integrados às tabelas estrangeiras Iceberg. O acesso a tabelas Iceberg estrangeiras no Databricks pode restaurar dados arquivados em camadas de armazenamento de baixo custo.
- No clustering de modo de acesso dedicado, as leituras e
REFRESH FOREIGN TABLEoperações nas tabelas Iceberg exigemALL PRIVILEGES.