Ir para o conteúdo principal

Iceberg v3: Movendo o Ecossistema em Direção à Unificação

Iceberg v3 contém novos recursos importantes (vetores de exclusão, linhagem de linhas, dados semi-estruturados, tipos geoespaciais) e unifica a camada de dados entre formatos

Apache Iceberg V3 features

Published: June 2, 2025

Código aberto6 min de leitura

Summary

  • Iceberg v3 contém novos recursos e melhorias: Vetores de Exclusão, Linhagem de Nível de Linha, Dados Semi-Estruturados 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 na Plataforma de Inteligência de Dados e está animada para que a indústria adote o Iceberg v3

Iceberg v3, agora aprovado pela comunidade Apache Iceberg, introduz novos recursos avançados e tipos de dados. Iceberg v3 inclui melhorias significativas como vetores de exclusão, linhagem de linhas e novos tipos para dados semi-estruturados e casos de uso geoespaciais. Esses recursos permitem que os clientes processem e consultem dados de maneira eficiente. Além disso, essas melhorias são consistentes em Delta Lake, Apache Parquet e Apache Spark, permitindo que os clientes interoperem entre Delta e Apache Iceberg sem reescrever dados ou arquivos de exclusão em nível de linha.

Neste post do blog, abordamos os desenvolvimentos mais recentes no Iceberg v3:

  • Vetores de Deleção
  • Linhagem de Linhas
  • Dados Semi-Estruturados e Tipos Geoespaciais
  • Interoperabilidade entre Delta Lake, Apache Parquet e Apache Spark

Vetores de Deleção

Iceberg v3 introduz um novo formato para exclusões em nível de linha para melhorar o desempenho de leitura: vetores de exclusão. As exclusões em nível de linha reduzem significativamente a amplificação de gravação otimizando como as linhas excluídas são armazenadas e rastreadas - levando a um ETL e ingestão mais rápidos. No Iceberg v2, os motores não eram obrigados a compactar arquivos de exclusão juntos durante as gravações. A intenção era que os clientes usassem 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 motores tinham que mesclar muitos arquivos de exclusão em nível de linha na leitura.

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 em memória usadas para aplicar as exclusões. Além disso, os motores devem manter um único vetor de exclusão por arquivo no momento da gravação. Este requisito melhora o desempenho e as estatísticas em arquivos de dados. Isso também facilita a comparação de exclusões anteriores e atuais, o que simplifica o processamento das alterações em nível de linha de uma tabela como um fluxo.

Linhagem de Linhas

Outra grande funcionalidade do Iceberg v3 é a linhagem de linhas, usada para simplificar o processamento incremental. Com a linhagem de linhas, os motores encontram alterações em nível de linha, comparando versões de linhas em commits.

Iceberg v3 introduz linhagem de linhas usando metadados em nível de 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 motores processem alterações de forma seletiva, simplificando as atualizações downstream com fluxos de trabalho mais rápidos e baratos.

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

Dados Semi-Estruturados e Tipos Geoespaciais

Iceberg v3 também adiciona novos tipos de dados para dados semi-estruturados e dados geoespaciais.

Dados semi-estruturados são difíceis de armazenar porque possuem esquemas variáveis, que não se encaixam em colunas de tabelas estruturadas. Uma solução alternativa é extrair campos individuais desses dados para um formato estruturado. No entanto, isso cria tabelas extremamente largas com muitas colunas e valores NULL devido a esquemas inconsistentes. Outra alternativa é armazenar JSON em colunas de string. Infelizmente, isso resulta em baixo desempenho de leitura porque os motores devem analisar dados dessas strings. Sem tipos de dados semi-estruturados, os motores não podem aplicar filtros, então precisam ler cada linha em cada arquivo de dados. Iceberg v3 introduz VARIANT para representar dados semi-estruturados 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 localizações de geodados. No entanto, essa representação não suportava pesquisa geográfica, já que colunas binárias não podem ser filtradas para encontrar objetos dentro de uma determinada área. Iceberg v3 resolve esse problema ao introduzir novos tipos de dados de geometria e geografia. Tipos de geometria são para dados espaciais planares, enquanto 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 eficientemente objetos geoespaciais.

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 promovem 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 grande escala, tornando essa escolha de longo prazo. Os formatos são muito semelhantes: ambos são camadas de metadados em cima de arquivos de dados Parquet para fornecer semântica de tabela. No entanto, pequenas diferenças nos formatos de tabela causam problemas para os clientes.

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

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

Ao ter recursos compatíveis em 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 formatos em uma única cópia de seus dados.

Saiba Mais Sobre o Iceberg v3

Iceberg v3 move toda a indústria para um mundo mais performático, capaz e interoperável. Estamos integrando o Iceberg v3 na Plataforma de Inteligência de Dados da Databricks e esperamos que outros fornecedores adotem o Iceberg v3. O código aberto é um valor central na Databricks, onde contribuímos ativamente com recursos como vetores de exclusão para o Iceberg v3. Para fomentar uma comunidade de código aberto próspera, apoiamos e encorajamos contribuições para o Apache Iceberg. Para novos contribuidores, recomendamos começar com um “bom primeiro problema”.

Para saber como planejamos integrar recursos do Iceberg v3 em nossa oferta de tabela gerenciada e o futuro dos formatos de tabela abertos, inscreva-se para o Data and AI Summit em 9-12 de junho de 2025.

 

(This blog post has been translated using AI-powered tools) Original Post

Nunca perca uma postagem da Databricks

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