- Data Hackers Newsletter
- Posts
- Por que escolher Apache Iceberg em vez de Delta Lake?
Por que escolher Apache Iceberg em vez de Delta Lake?
Explore os motivos pelos quais o Apache Iceberg pode ser a melhor opção para sua stack de dados aberta e como ele se compara ao Delta Lake.
Você está buscando maneiras de otimizar sua stack de dados e se pergunta se deve optar pelo Apache Iceberg ou pelo Delta Lake? Nesse post, vamos analisar as principais vantagens do Iceberg, destacando sua flexibilidade, compatibilidade com múltiplos sistemas e suas capacidades que superam os desafios comuns enfrentados por engenheiros de dados. Você vai entender por que muitos profissionais estão considerando o Iceberg como a solução ideal para o gerenciamento de grandes conjuntos de dados em um ambiente de big data.
O que é Apache Iceberg?
O Apache Iceberg é um formato de tabela de dados distribuído, gerido pela comunidade e licenciado sob a Apache 2.0, sendo totalmente open-source. Ele é projetado para simplificar o processamento de dados em grandes conjuntos de dados armazenados em data lakes, oferecendo confiabilidade e simplicidade em tabelas SQL para análises.
O Iceberg permite que motores de processamento como Apache Spark, Apache Flink, Trino, Hive e Impala trabalhem com as mesmas tabelas de maneira segura e simultânea, mantendo registros detalhados sobre como os conjuntos de dados mudam ao longo do tempo. Outras características importantes incluem a evolução do esquema e a gestão eficaz das partições, tornando o trabalho com dados muito mais eficiente.
Graças a essas funcionalidades, o Apache Iceberg se tornou uma escolha popular entre engenheiros de dados, que buscam soluções rápidas, eficientes e confiáveis para lidar com grandes volumes de informações.

O Apache Iceberg se tornou uma das soluções mais populares entre engenheiros de dados
Quais as vantagens do Apache Iceberg?
O Apache Iceberg oferece uma série de vantagens significativas que o destacam como uma escolha preferencial para o gerenciamento de grandes conjuntos de dados. Aqui estão alguns dos principais benefícios:
Transações ACID: Garante propriedades de transações ACID (Atomicidade, Consistência, Isolamento e Durabilidade), assegurando a precisão e a integridade dos dados.
Evolução de esquema e partições: Permite realizar a evolução de esquemas e partições sem migrações de dados complicadas, facilitando a adaptação às mudanças nos requisitos dos dados.
Viagem no tempo: A funcionalidade de “viagem no tempo” permite que os usuários acessem snapshots dos dados em diferentes momentos, útil para auditorias e para a verificação de conformidade.
Particionamento oculto: O Iceberg gerencia automaticamente o particionamento, eliminando a necessidade de intervenção do usuário, o que facilita mudanças nos layouts de partição sem afetar as consultas existentes.
Desempenho superior: Estudos demonstram que o Iceberg tem desempenho superior em várias operações em comparação com outras tecnologias, como Delta Lake e Apache Hudi.
Compatibilidade com diferentes sistemas: É projetado para ser independente do sistema de armazenamento ou formato de arquivo, suportando várias fontes de dados.
Esses fatores tornam o Apache Iceberg uma proposta atraente para aqueles que buscam um formato de tabela eficiente e robusto em suas arquiteturas de dados.

Explicação do funcionamento do Apache Iceberg
Por que escolher Apache Iceberg em vez de Delta Lake?
Ao considerar o Apache Iceberg como alternativa ao Delta Lake, diversas vantagens tornam essa ferramenta uma escolha atraente para muitas organizações:
Ecosistema aberto: O Iceberg é um projeto comunitário que se beneficia de contribuições de várias empresas, enquanto o Delta Lake é otimizado principalmente para o ambiente da Databricks.
Estratégia de desenvolvimento aberta: O Iceberg possibilita que sistemas que trabalham com tabelas Iceberg compartilhem um conjunto comum de bibliotecas chamadas Iceberg Core, promovendo um desenvolvimento ágil e colaborativo.
Inovação e flexibilidade: Possibilita uma separação entre armazenamento e computação, permitindo que os usuários escalem seus recursos de forma independente, resultando em economia de custos.
Desempenho e garantias ACID: Embora ambos ofereçam conformidade com ACID, o Iceberg é otimizado para fornecer funcionalidades de data warehouse em sistemas de armazenamento de objetos.
Integração com Trino: Desenvolvido inicialmente com compatibilidade para o Trino, garantindo que as consultas sejam rápidas e eficientes.
Evita o lock-in de fornecedor: A abordagem aberta do Iceberg permite evitar dependência de um único fornecedor, gerando economias significativas e aumentando a flexibilidade operacional.
Suporte a inovação e colaboração: A comunidade ativa do projeto promove a inovação contínua no espaço de big data, fundamental para a evolução das ferramentas do setor.
Esses fatores posicionam o Apache Iceberg como uma escolha superior para organizações que buscam flexibilidade, inovação e integração em um ambiente de big data.
Quando não usar o Apache Iceberg?
Embora o Apache Iceberg seja uma excelente escolha, existem situações em que seu uso pode não ser recomendado:
Ao usar catálogo Hadoop em produção: Limitações em recursos podem comprometer a integridade e eficiência das operações. Alternativas como Hive (HMS) ou Glue são mais adequadas nesses casos.
Quando não se utiliza tabelas de metadados: Ignorar a implementação pode dificultar a análise do estado atual da tabela, limitando a eficácia das consultas.
Ao não ajustar propriedades para operações concorrentes: O controle de concorrência otimista pode falhar com as configurações padrão, levando a falhas nos commits.
Quando se trabalha com muitos arquivos pequenos: Quando muitos arquivos pequenos são criados, a performance das consultas pode ser degradada. É crucial prevenir isso por meio de particionamento adequado.
Ao usar compactação inadequadamente: A compactação é essencial para otimizar tabelas. Reescrever arquivos de forma correta maximiza a eficiência.
Coleta de lixo incorreta: Uma gestão inadequada da garbage collection pode resultar na eliminação de arquivos que foram compactados.
Não fazer ajuste das propriedades de métricas: O Iceberg coleta estatísticas por padrão, mas ajustá-las para incluir apenas colunas filtradas pode melhorar a eficiência.
Erros na instalação manual: Não seguir a documentação pode levar a problemas na carga de classes.
Esses pontos ressaltam a importância de um planejamento cuidadoso e a adoção das melhores práticas ao considerar a implementação do Apache Iceberg.
Como migrar de Delta Lake para Apache Iceberg?
Migrar de Delta Lake para Apache Iceberg pode parecer um desafio, mas, seguindo algumas etapas simples, você pode realizar a transição de forma eficaz:
Preparar as dependências: Inclua o módulo
iceberg-delta-lake
juntamente com dependências essenciais, comoiceberg-delta-lake
,delta-standalone
edelta-storage
.Compatibilidades: Verifique se as tabelas de Delta Lake são compatíveis com a versão do protocolo de Delta utilizada.
Usar a API: O módulo fornece uma interface chamada
DeltaLakeToIcebergMigrationActionsProvider
, que contém as ações necessárias para converter a tabela de Delta Lake em uma tabela de Iceberg.Executar a migração: Utilize o seguinte exemplo de código:
DeltaLakeToIcebergMigrationActionsProvider.defaultActions() .snapshotDeltaLakeTable(sourceDeltaLakeTableLocation) .as(destTableIdentifier) .icebergCatalog(icebergCatalog) .tableLocation(destTableLocation) .deltaLakeConfiguration(hadoopConf) .execute();
Considerações adicionais: As tabelas criadas através de
snapshotDeltaLakeTable
não são donas exclusivas de seus arquivos de dados, o que implica que certas operações podem comprometer a integridade do snapshot.
Seguindo esses passos, você conseguirá realizar a migração de forma eficiente.
Vale a pena escolher Apache Iceberg?
Neste post, discutimos as razões pelas quais o Apache Iceberg pode ser uma alternativa atraente ao Delta Lake, destacando suas principais vantagens, como transações ACID, evolução de esquema e partições, além de um desempenho superior. Com sua abordagem aberta e flexível, o Iceberg se alinha às necessidades dos engenheiros de dados que buscam soluções eficientes e robustas para o gerenciamento de grandes volumes de dados.
Além disso, abordamos situações em que o uso do Iceberg pode não ser recomendado, enfatizando a importância de um planejamento cuidadoso para garantir a eficácia da implementação. Ao considerar a migração do Delta Lake para o Apache Iceberg, as etapas que apresentamos aqui podem facilitar uma transição suave, permitindo que equipes aproveitem ao máximo as funcionalidades dessa tecnologia inovadora.