Ir para o conteúdo principal

Apache Iceberg™ v3: Levando o ecossistema à unificação

O Apache Iceberg™ v3 contém novos recursos importantes (vetores de exclusão, linhagem de linha, dados semiestruturados, tipos geoespaciais) e unifica a camada de dados entre formatos

Apache Iceberg V3 features

Publicado: 2 de junho de 2025

Código aberto6 min de leitura

Summary

  • O Apache Iceberg™ v3 contém novos recursos e melhorias: Vetores de Exclusão, Linhagem no Nível da Linha, Dados Semiestruturados e Tipos Geoespaciais
  • Com esses recursos, o Iceberg v3 unifica a camada de dados entre Apache Iceberg™, Delta Lake, Apache Parquet e Apache Spark™
  • A Databricks está integrando o Iceberg v3 à plataforma Data Intelligence e está entusiasmada para que o setor adote o Iceberg v3

O Apache Iceberg™ v3, agora aprovado pela comunidade Apache Iceberg, introduz novos recursos avançados e tipos de dados. O Iceberg v3 inclui grandes melhorias, como vetores de exclusão, linhagem de linhas e novos tipos para dados semiestruturados e casos de uso geoespaciais. Esses recursos permitem que os clientes processem e consultem dados de forma eficiente. Além disso, essas melhorias são consistentes entre Delta Lake, Apache Parquet e Apache Spark, para que os clientes possam interoperar entre Delta e Apache Iceberg sem reescrever dados ou excluir arquivos no nível da linha.

Nesta postagem do blog, abordaremos os desenvolvimentos mais recentes no Iceberg v3:

  • Vetores de Exclusão
  • Linhagem de Linhas
  • Dados Semiestruturados e Tipos Geoespaciais
  • Interoperabilidade entre Delta Lake, Apache Parquet e Apache Spark

Vetores de Exclusão

O Iceberg v3 introduz um novo formato para exclusões no nível da linha para melhorar o desempenho de leitura: vetores de exclusão. As exclusões no nível da linha reduzem significativamente a amplificação de gravação, otimizando como as linhas excluídas são armazenadas e rastreadas, o que leva a um ETL e ingestão mais rápidos. No Iceberg v2, os mecanismos não eram obrigados a compactar arquivos de exclusão juntos durante as gravações. A intenção era que os clientes usassem a manutenção assíncrona. No entanto, muitos clientes não agendaram serviços de manutenção, então suas tabelas tinham muitos arquivos de exclusão não mantidos. Isso levou a um desempenho de leitura lento quando os mecanismos tiveram que mesclar muitos arquivos de exclusão no nível da linha na leitura.

O Iceberg v3 introduz um novo formato de vetor de exclusão e novos requisitos de compactação para arquivos de exclusão. Este novo formato evita a tradução entre arquivos Parquet e representações na memória usadas para aplicar as exclusões. Além disso, os mecanismos devem manter um único vetor de exclusão por arquivo no momento da gravação. Esse requisito melhora o desempenho e as estatísticas nos arquivos de dados. Isso também facilita a comparação de exclusões anteriores e atuais, o que simplifica o processamento das alterações no nível da linha de uma tabela como um fluxo.

Linhagem de Linhas

Outro recurso importante do Iceberg v3 é a linhagem de linhas, usada para simplificar o processamento incremental. Com a linhagem de linhas, os mecanismos encontram alterações no nível da linha, correspondendo às versões das linhas entre os commits.

O Iceberg v3 introduz a linhagem de linhas usando metadados no nível da linha: um ID de linha e o número de sequência quando a linha foi modificada ou adicionada pela última vez. Os IDs identificam a mesma linha em diferentes versões. Os números de sequência anotam quando as linhas foram alteradas pela última vez - não apenas realocadas entre arquivos. Isso permite que os mecanismos processem as alterações seletivamente, simplificando as atualizações downstream com fluxos de trabalho mais rápidos e baratos.

As informações de ID da linha são especialmente benéficas quando combinadas com objetos de processamento incremental, como visualizações materializadas. Esses objetos são otimizados para computar apenas dados novos ou alterados desde o último ciclo de processamento.

e-books

Introdução ao ETL

Dados Semiestruturados e Tipos Geoespaciais

O Iceberg v3 também adiciona novos tipos de dados para dados semiestruturados e dados geoespaciais.

Dados semiestruturados são difíceis de armazenar porque têm esquemas variáveis, que não se encaixam em colunas de tabela estruturadas. Uma solução alternativa é extrair campos individuais desses dados em um formato estruturado. No entanto, isso cria tabelas extremamente amplas com muitas colunas e valores NULL devido a esquemas inconsistentes. Outra alternativa é armazenar JSON em colunas de string. Infelizmente, isso resulta em desempenho de leitura ruim porque os mecanismos devem analisar os dados dessas strings. Sem tipos de dados semiestruturados, os mecanismos não podem efetuar push de filtros, então eles precisam ler cada linha em cada arquivo de dados. O Iceberg v3 introduz VARIANT para representar dados semiestruturados de forma eficiente. VARIANT codifica a estrutura dos dados para melhorar o desempenho, mantendo a flexibilidade do esquema.

Da mesma forma, dados geoespaciais — informações associadas a locais na superfície da Terra, como estradas, parques ou limites de cidades — também são difíceis de trabalhar e consultar de forma eficiente. Sem tipos geoespaciais, os clientes tinham que usar colunas binárias para armazenar locais de geodados. No entanto, essa representação não suportava a pesquisa geográfica, pois as colunas binárias não podem ser filtradas para encontrar objetos dentro de uma determinada área. O Iceberg v3 resolve esse problema introduzindo novos tipos de dados de geometria e geografia. Os tipos de geometria são para dados espaciais planares, enquanto os tipos de geografia são para dados globais que levam em conta a curvatura da Terra. Com esses tipos, os clientes encontram facilmente dados usando caixas delimitadoras que representam regiões geográficas e localizam objetos geoespaciais de forma eficiente.

Interoperabilidade com Delta Lake, Apache Parquet e Apache Spark

Os novos recursos e tipos de dados do Iceberg v3 expandem a funcionalidade e melhoram o desempenho. Esses recursos do Apache Iceberg também são importantes porque impulsionam a interoperabilidade entre os formatos de lakehouse.

Historicamente, os clientes foram forçados a escolher entre dois dos formatos de lakehouse mais populares: Delta Lake e Apache Iceberg. Isso ocorre porque a maioria das plataformas suporta apenas um formato. Reescrever dados pode ser caro e impraticável em escala, tornando essa escolha de longo prazo. Os formatos são muito semelhantes: ambos são camadas de metadados sobre arquivos de dados Parquet para fornecer semântica de tabela. No entanto, pequenas diferenças nos formatos de tabela causam problemas para os clientes.

O Iceberg v3 unifica a camada de dados entre os formatos. Com a unificação de dados, os clientes podem interoperar entre Delta e Iceberg sem precisar reescrever dados ou excluir arquivos. Isso ocorre porque os recursos do Iceberg v3 têm implementações compatíveis entre Delta Lake, Apache Parquet e Apache Spark:

  • Vetores de exclusão usam as mesmas codificações binárias entre os formatos de tabela
  • A linhagem no nível da linha no Iceberg v3 é compatível com o rastreamento de linhas no Delta Lake
  • Os tipos VARIANT e geodata estão sendo desenvolvidos nas comunidades upstream do Apache Parquet e Apache Spark™, o que se estende ao Apache Iceberg e Delta Lake

Ao ter recursos compatíveis entre projetos de código aberto, o Iceberg v3 evita forçar os clientes a escolher um formato. Em vez disso, os clientes podem interoperar livremente entre os formatos em uma cópia de seus dados.

Saiba Mais Sobre o Iceberg v3

O Iceberg v3 leva todo o setor adiante para um mundo mais eficiente, capaz e interoperável. Estamos integrando o Iceberg v3 à Plataforma de Inteligência de Dados Databricks e esperamos que outros fornecedores adotem o Iceberg v3. O código aberto é um valor fundamental na Databricks, onde contribuímos ativamente com recursos como vetores de exclusão para o Iceberg v3. Para promover uma comunidade de código aberto próspera, apoiamos e incentivamos contribuições para o Apache Iceberg. Para novos colaboradores, recomendamos começar com um “bom primeiro problema”.

Para saber mais sobre como planejamos integrar os recursos do Iceberg v3 em nossa oferta de tabelas gerenciadas e o futuro dos formatos de tabela abertos, inscreva-se no Data and AI Summit de 9 a 12 de junho de 2025.

(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada