Айсберг является высокопроизводительным форматом для огромных аналитических таблиц. Айсберг привносит надежность и простоту таблиц SQL в большие данные, в то же время позволяя таким двигателям, как Spark, Trino, Flink, Presto, Hive и Impala, чтобы безопасно работать с теми же таблицами, одновременно.
Фон и документация доступны по адресу https://iceberg.apache.org
Айсберг находится в активной разработке в Apache Software Foundation.
Спецификация формата айсберга является стабильной, и с каждой версией добавляются новые функции.
Основная библиотека Java находится в этом хранилище и является эталонной реализацией для других библиотек.
Документация доступна для всех библиотек и интеграций.
Айсберг отслеживает проблемы в GitHub и предпочитает получать взносы в качестве запросов на притяжение.
Общественные обсуждения происходят в основном в списке рассылки DEV или по конкретным вопросам.
Айсберг построен с использованием Gradle с Java 11, 17 или 21.
./gradlew build./gradlew build -x test -x integrationTest./gradlew spotlessApply./gradlew spotlessApply -DallModulesПоддержка таблицы айсберга организована в библиотечных модулях:
iceberg-common содержит полезные классы, используемые в других модуляхiceberg-api содержит общественный айсбергский APIiceberg-core содержит реализации API айсберга и поддержку файлов данных AVRO, это то, на что должны зависеть обработка двигателейiceberg-parquet -это дополнительный модуль для работы с таблицами, поддерживаемыми Parquet Filesiceberg-arrow является дополнительным модулем для чтения паркета в память стрелкиiceberg-orc -это дополнительный модуль для работы с таблицами, поддерживаемыми файлами ORCiceberg-hive-metastore -это реализация таблиц айсбергiceberg-data является дополнительным модулем для работы с таблицами непосредственно из приложений JVMАйсберг также имеет модули для добавления поддержки айсберга в переработкие двигатели:
iceberg-spark -это реализация API DataSource V2 DataSource V2 Spark для айсберга с подмодулями для каждой версии Spark (используйте банки во время выполнения для затененной версии)iceberg-flink содержит классы для интеграции с Apache Flink (используйте Aceberg-Flink-Time для заштрихованной версии)iceberg-mr содержит входные и другие классы для интеграции с Apache HiveПРИМЕЧАНИЕ
Тесты требуют выполнения Docker. На MacOS (с настольным компьютером Docker) вам может потребоваться создать символическое название в розетке Docker, чтобы быть обнаруженным тестами:
sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock
Посмотрите на страницу поддержки с несколькими двигателями, чтобы узнать о совместимости айсберга с различными версиями Spark, Flink и Hive. Для других двигателей, таких как Presto или Trino, посетите их веб -сайты для деталей интеграции айсберга.
Этот репозиторий содержит Java реализацию айсберга. Другие реализации можно найти по адресу: