Iceberg es un formato de alto rendimiento para enormes tablas analíticas. Iceberg trae la confiabilidad y la simplicidad de las tablas SQL a Big Data, al tiempo que hace posible que motores como Spark, Trino, Flink, Presto, Hive e Impala trabajen de manera segura con las mismas tablas, al mismo tiempo.
Antecedentes y documentación están disponibles en https://iceberg.apache.org
Iceberg está bajo desarrollo activo en la Fundación Apache Software.
La especificación del formato de iceberg es estable y se agregan nuevas características con cada versión.
La biblioteca Core Java se encuentra en este repositorio y es la implementación de referencia para otras bibliotecas.
La documentación está disponible para todas las bibliotecas e integraciones.
Iceberg rastrea los problemas en GitHub y prefiere recibir contribuciones como solicitudes de extracción.
Las discusiones comunitarias ocurren principalmente en la lista de correo de desarrollo o en temas específicos.
Iceberg se construye con Gradle con Java 11, 17 o 21.
./gradlew build./gradlew build -x test -x integrationTest./gradlew spotlessApply./gradlew spotlessApply -DallModulesEl soporte de la mesa de iceberg está organizado en los módulos de la biblioteca:
iceberg-common contiene clases de utilidad utilizadas en otros módulosiceberg-api contiene la API pública de icebergiceberg-core contiene implementaciones de la API de iceberg y soporte para archivos de datos AVRO, esto es de lo que deben depender los motores de procesamientoiceberg-parquet es un módulo opcional para trabajar con tablas respaldadas por archivos parqueticeberg-arrow es un módulo opcional para leer el parquet en la memoria de flechaiceberg-orc es un módulo opcional para trabajar con tablas respaldadas por archivos ORCiceberg-hive-metastore es una implementación de mesas de iceberg respaldadas por el cliente de ahorro de Hive Metastoreiceberg-data es un módulo opcional para trabajar con tablas directamente desde las aplicaciones JVMIceberg también tiene módulos para agregar soporte de iceberg a los motores de procesamiento:
iceberg-spark es una implementación de la API de DataSource V2 de Spark para Iceberg con submódulos para cada versiones de Spark (use frascos de tiempo de ejecución para una versión sombreada)iceberg-flink contiene clases para integrarse con Apache Flink (use Iceberg-Flink-Runtime para una versión sombreada)iceberg-mr contiene un InputFormat y otras clases para integrarse con Apache HiveNOTA
Las pruebas requieren que Docker ejecute. En MacOS (con Docker Desktop), es posible que deba crear un nombre simbólico en el Socket Docker para ser detectado mediante las pruebas:
sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock
Consulte la página de soporte de varios motores para conocer la compatibilidad con iceberg con diferentes versiones de chispa, flink y colmena. Para otros motores como Presto o Trino, visite sus sitios web para obtener detalles de integración de iceberg.
Este repositorio contiene la implementación de Java de Iceberg. Se pueden encontrar otras implementaciones en: