Icebergは、巨大な分析テーブルの高性能形式です。 IcebergはSQLテーブルの信頼性とシンプルさをビッグデータにもたらし、Spark、Trino、Flink、Presto、Hive、Impalaなどのエンジンが同時に同じテーブルで安全に動作することを可能にします。
背景とドキュメントはhttps://iceberg.apache.orgで入手できます
Icebergは、Apache Software Foundationで積極的に開発されています。
Iceberg形式の仕様は安定しており、各バージョンで新機能が追加されています。
コアJavaライブラリはこのリポジトリにあり、他のライブラリの参照実装です。
すべてのライブラリと統合にはドキュメントが利用できます。
IcebergはGithubの問題を追跡し、プルリクエストとしての寄付を受けることを好みます。
コミュニティの議論は、主に開発者のメーリングリストまたは特定の問題で行われます。
Icebergは、Java 11、17、または21のGradleを使用して建設されています。
./gradlew build./gradlew build -x test -x integrationTest./gradlew spotlessApply./gradlew spotlessApply -DallModulesIceberg Tableサポートは、ライブラリモジュールで編成されています。
iceberg-commonには、他のモジュールで使用されるユーティリティクラスが含まれていますiceberg-apiには、パブリックアイスバーグAPIが含まれていますiceberg-coreには、Iceberg APIの実装とAvroデータファイルのサポートが含まれています。これは、処理エンジンが依存すべきものですiceberg-parquet Parquetファイルに裏打ちされたテーブルを使用するためのオプションのモジュールですiceberg-arrowは、Parquetを矢印のメモリに読むためのオプションのモジュールですiceberg-orc ORCファイルに裏打ちされたテーブルを使用するためのオプションのモジュールですiceberg-hive-metastore Hive Metastore Thriftクライアントに支えられたアイスバーグテーブルの実装ですiceberg-data JVMアプリケーションから直接テーブルを操作するためのオプションのモジュールですIcebergには、加工エンジンに氷山サポートを追加するためのモジュールもあります。
iceberg-sparkは、SparkのDataSource v2 APIの実装であり、各Sparkバージョンにサブモジュールを備えたIceberg用のAPIです(日陰のバージョンにはランタイムジャーを使用)iceberg-flinkには、Apache Flinkと統合するためのクラスが含まれています(日陰のバージョンにはIceberg-Flink-Runtimeを使用)iceberg-mrには、Apache Hiveと統合するための入力フォーマットおよびその他のクラスが含まれています注記
テストでは、Dockerを実行する必要があります。 MacOS(Dockerデスクトップ付き)では、テストで検出するために、Dockerソケットにシンボリック名を作成する必要がある場合があります。
sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock
さまざまなSpark、Flink、HiveバージョンとのIcebergの互換性について知るために、マルチエンジンサポートページを参照してください。 PrestoやTrinoなどの他のエンジンについては、Iceberg Integrationの詳細については、Webサイトにアクセスしてください。
このリポジトリには、IcebergのJava実装が含まれています。その他の実装は、次のように見つけることができます。