Acesse o painel da sua conta

Não tem uma conta? Registrar

Entrar em contato

Visite também nosso site craftxp.com.br

  • img
  • img
  • img
  • img
  • img
  • img

Entre em contato

Apache Iceberg: O Formato de Tabela que Está Revolucionando os Data Lakes Modernos

Apache Iceberg: O Formato de Tabela que Está Revolucionando os Data Lakes Modernos

O Problema dos Data Lakes Tradicionais

Data lakes construídos sobre Hive e Parquet sofreram por anos com problemas fundamentais: falta de atomicidade em operações de escrita, impossibilidade de evoluir schemas sem reescrever dados inteiros, performance degradante em consultas com filtros por partição, e a ausência de isolamento entre operações concorrentes. O Apache Iceberg foi projetado para resolver cada um desses problemas.

O que é Apache Iceberg?

Apache Iceberg é um formato de tabela (table format) de alto desempenho projetado para data lakes massivos. Diferente de um formato de arquivo como Parquet ou ORC, que define como os dados são armazenados em disco, o Iceberry define como as tabelas são organizadas, versionadas e consultadas sobre esses formatos de arquivo.

Criado originalmente na Netflix e doado para a Apache Foundation, o Iceberg hoje é suportado por todos os principais engines de processamento: Apache Spark, Trino, Flink, Hive, Presto, Dremio, StarRocks e muito mais.

Principais Características

  • ACID Transactions: Operações de escrita são atômicas e isoladas — leitores nunca veem dados parciais ou inconsistentes.
  • Snapshot Isolation e Time Travel: Cada operação de escrita cria um snapshot imutável. Consulte qualquer versão anterior da tabela com uma simples cláusula.
  • Evolução de Schema Segura: Adicione, remova ou renomeie colunas sem reescrever dados. Iceberg rastreia o histórico completo de schemas.
  • Hidden Partitioning: Partições são gerenciadas automaticamente — usuários não precisam mais especificar filtros de partição manualmente nas consultas.
  • Compaction e Rewrite Automáticos: Otimize o layout físico dos dados sem downtime.

Time Travel na Prática

-- Spark SQL: Consultar estado da tabela em 1 de janeiro
SELECT * FROM vendas.vendas_diarias
FOR SYSTEM_TIME AS OF '2026-01-01 00:00:00'
WHERE categoria = 'eletronicos';

-- Ou usar o ID do snapshot
SELECT * FROM vendas.vendas_diarias
FOR SYSTEM_VERSION AS OF 982734619283746;

-- Ver histórico de snapshots
SELECT * FROM vendas.vendas_diarias.history;

-- Rollback para versão anterior
CALL vendas.system.rollback_to_snapshot(
    'vendas_diarias', 982734619283746
);

Evolução de Schema sem Rewrite

-- Iceberg permite estas operações SEM reescrever dados existentes

-- Adicionar coluna
ALTER TABLE vendas.vendas_diarias ADD COLUMN desconto decimal(5,2);

-- Renomear coluna
ALTER TABLE vendas.vendas_diarias RENAME COLUMN cliente_id TO comprador_id;

-- Reordenar colunas
ALTER TABLE vendas.vendas_diarias ALTER COLUMN valor FIRST;

-- Aumentar tamanho de coluna
ALTER TABLE vendas.vendas_diarias ALTER COLUMN nome TYPE string;

Hidden Partitioning: Partições que Funcionam

No Hive tradicional, o usuário precisa particionar manualmente e garantir que os filtros na consulta correspondam à estrutura de partição. Com Iceberg, as partições são inferidas automaticamente:

-- Criar tabela Iceberg com partição por data
CREATE TABLE vendas.vendas_diarias (
    id bigint,
    data date,
    valor decimal(10,2),
    cliente string,
    categoria string
) USING iceberg
PARTITIONED BY (data);

-- Iceberg cria partições por mês automaticamente
-- Consulta com filtro OTIMIZADO sem o usuário saber
SELECT sum(valor) FROM vendas.vendas_diarias
WHERE data BETWEEN '2026-01-01' AND '2026-03-31';

-- Transformações de partição built-in
PARTITIONED BY (months(data));   -- Agrupamento mensal
PARTITIONED BY (days(data));     -- Agrupamento diário
PARTITIONED BY (bucket(16, id)); -- Hash bucket para alta cardinalidade
PARTITIONED BY (truncate(10, nome)); -- Truncamento de strings

Iceberg vs Hive vs Delta Lake

CaracterísticaHiveDelta LakeIceberg
ACID TransactionsNãoSimSim
Time TravelNãoSimSim
Hidden PartitioningNãoNãoSim
Schema EvolutionLimitadaSimSim (mais flexível)
Engine SupportUniversalSpark-centricUniversal (multi-engine)
Catalog agnósticoNãoNãoSim (REST, JDBC, Hive, Nessie)
File FormatQualquerParquetParquet, Avro, ORC

Integração com Spark e Trino

-- Configurar Spark com Iceberg
spark-shell --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.0

-- Criar tabela Iceberg no Spark
spark.sql("""
    CREATE TABLE prod.logs_analise (
        id BIGINT,
        nivel STRING,
        mensagem STRING,
        timestamp TIMESTAMP
    ) USING iceberg
    PARTITIONED BY (days(timestamp))
    LOCATION 's3://meu-data-lake/logs/'
""")

-- Inserir dados
spark.sql("""
    INSERT INTO prod.logs_analise VALUES
    (1, 'ERROR', 'Falha na conexão', current_timestamp())
""")

-- Consultar com Trino SQL
-- SELECT * FROM iceberg.logs_db.logs_analise
-- WHERE nivel = 'ERROR' AND day(timestamp) = '2026-06-14'

Por que Iceberg está vencendo a guerra de formatos?

O Iceberg se destaca por sua abordagem agnóstica a engines. Enquanto Delta Lake é fortemente acoplado ao ecossistema Databricks/Spark, o Iceberg foi projetado para funcionar com qualquer engine de processamento — Spark, Flink, Trino, Presto, Dremio, StarRocks e até DuckDB. Isso o torna a escolha natural para empresas com ambientes multi-engine.

Além disso, o REST Catalog do Iceberg permite gerenciar tabelas de forma centralizada e independente do engine, facilitando governança e linhagem de dados em escala corporativa.

Casos de Uso Reais

  • Netflix: Catálogo de metadados unificado para centenas de petabytes de dados de streaming.
  • Apple: Data lake analítico para produtos como iCloud, App Store e Apple Music.
  • Adobe: Plataforma de dados do cliente (CDP) com bilhões de registros diários.
  • Tesla: Armazenamento de telemetria de veículos para treinamento de modelos de direção autônoma.
  • Airbnb: Infraestrutura de dados para recomendações e precificação dinâmica.

Conclusão

Apache Iceberg é mais que um formato de tabela — é um padrão emergente para gerenciamento de dados em data lakes modernos. Com ACID transactions, time travel, hidden partitioning e suporte universal a engines de processamento, ele resolve os problemas que atormentaram engenheiros de dados por mais de uma década.

Se você está construindo ou mantendo um data lake, migrar para Iceberg é uma das decisões técnicas com maior retorno sobre investimento disponíveis em 2026. O ecossistema está maduro, as ferramentas são robustas e a comunidade — apoiada por empresas como Netflix, Apple e Adobe — continua acelerando.

Craft XP
Craft XP