Iceberg est un format haute performance pour d'énormes tables analytiques. Iceberg apporte la fiabilité et la simplicité des tables SQL aux mégadonnées, tout en permettant aux moteurs comme Spark, Trino, Flink, Presto, Hive et Impala de travailler en toute sécurité avec les mêmes tableaux, en même temps.
L'arrière-plan et la documentation sont disponibles sur https://iceberg.apache.org
Iceberg est en cours de développement actif à l'Apache Software Foundation.
La spécification du format iceberg est stable et de nouvelles fonctionnalités sont ajoutées à chaque version.
La bibliothèque Java de base est située dans ce référentiel et est l'implémentation de référence pour d'autres bibliothèques.
La documentation est disponible pour toutes les bibliothèques et intégrations.
Iceberg suit les problèmes dans GitHub et préfère recevoir des contributions en tant que demandes de traction.
Les discussions communautaires se produisent principalement sur la liste des difficultés ou sur des questions spécifiques.
Iceberg est construit à l'aide de Gradle avec Java 11, 17 ou 21.
./gradlew build./gradlew build -x test -x integrationTest./gradlew spotlessApply./gradlew spotlessApply -DallModulesLe support de la table Iceberg est organisé en modules de bibliothèque:
iceberg-common contient des cours de services publics utilisés dans d'autres modulesiceberg-api contient l'API public icebergiceberg-core contient des implémentations de l'API iceberg et de la prise en charge des fichiers de données AVRO, c'est ce que les moteurs de traitement devraient dépendreiceberg-parquet est un module facultatif pour travailler avec des tables soutenues par des fichiers Parqueticeberg-arrow est un module facultatif pour lire le parquet dans la mémoire de la flècheiceberg-orc est un module facultatif pour travailler avec des tables sauvegardées par des fichiers ORCiceberg-hive-metastore est une mise en œuvre de tables iceberg soutenues par le client de Thrift Hive Metastoreiceberg-data est un module facultatif pour travailler avec des tables directement à partir des applications JVMIceberg a également des modules pour ajouter le support d'iceberg aux moteurs de traitement:
iceberg-spark est une implémentation de l'API DataSource V2 de Spark pour iceberg avec des sous-modules pour chaque versions Spark (utilisez des pots d'exécution pour une version ombragée)iceberg-flink contient des cours d'intégration avec Apache Flink (utilisez iceberg-flink-runtime pour une version ombragée)iceberg-mr contient une FORYFORMAT et d'autres classes à intégrer avec Apache HiveNOTE
Les tests nécessitent que Docker s'exécute. Sur MacOS (avec Docker Desktop), vous devrez peut-être créer un nom symbolique dans la prise Docker afin d'être détecté par les tests:
sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock
Voir la page de support multi-moteurs pour connaître la compatibilité des iceberg avec différentes versions Spark, Flink et Hive. Pour d'autres moteurs tels que Presto ou Trino, veuillez visiter leurs sites Web pour les détails de l'intégration d'iceberg.
Ce référentiel contient l'implémentation Java d'iceberg. D'autres implémentations peuvent être trouvées à: