O Iceberg é um formato de alto desempenho para enormes tabelas analíticas. O Iceberg traz a confiabilidade e a simplicidade das tabelas SQL para o Big Data, enquanto possibilitam motores como Spark, Trino, Flink, Presto, Hive e Impala trabalhar com segurança com as mesmas tabelas, ao mesmo tempo.
Antecedentes e documentação estão disponíveis em https://iceberg.apache.org
O Iceberg está sob desenvolvimento ativo na Apache Software Foundation.
A especificação do formato iceberg é estável e novos recursos são adicionados a cada versão.
A biblioteca Java Core está localizada neste repositório e é a implementação de referência para outras bibliotecas.
A documentação está disponível para todas as bibliotecas e integrações.
O Iceberg rastreia os problemas no Github e prefere receber contribuições como solicitações de puxão.
As discussões da comunidade ocorrem principalmente na lista de discussão de desenvolvedores ou em questões específicas.
O Iceberg é construído usando o gradle com Java 11, 17 ou 21.
./gradlew build./gradlew build -x test -x integrationTest./gradlew spotlessApply./gradlew spotlessApply -DallModulesO suporte à mesa do iceberg está organizado nos módulos da biblioteca:
iceberg-common contém classes utilitárias usadas em outros módulosiceberg-api contém a API pública de icebergiceberg-core contém implementações da API iceberg e suporte para arquivos de dados AVRO, é nisso que os mecanismos de processamento devem depender deiceberg-parquet é um módulo opcional para trabalhar com mesas apoiadas por arquivos parqueticeberg-arrow é um módulo opcional para ler parquet na memória de setaiceberg-orc é um módulo opcional para trabalhar com tabelas apoiadas por arquivos orciceberg-hive-metastore é uma implementação de mesas de iceberg apoiadas pelo cliente da hive metaseleiceberg-data é um módulo opcional para trabalhar com tabelas diretamente a partir de aplicativos JVMO Iceberg também possui módulos para adicionar suporte de iceberg aos motores de processamento:
iceberg-spark é uma implementação da API DataSource V2 da Spark para iceberg com submódulos para cada versões Spark (use frascos de tempo de execução para uma versão sombreada)iceberg-flink contém classes para integrar o Apache Flink (use iceberg-flink-runtime para uma versão sombreada)iceberg-mr contém um InputFormat e outras classes para integrar com o Apache HiveOBSERVAÇÃO
Os testes exigem que o Docker seja executado. No macOS (com o Docker Desktop), pode ser necessário criar um nome simbólico para o soquete do Docker para ser detectado pelos testes:
sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock
Consulte a página de suporte a vários motores para saber sobre a compatibilidade com iceberg com diferentes versões Spark, Flink e Hive. Para outros motores, como Presto ou Trino, visite seus sites para obter detalhes de integração Iceberg.
Este repositório contém a implementação de Java do iceberg. Outras implementações podem ser encontradas em: