🧊

Iceberg 1.9.0の変更点

に公開

Iceberg 1.9.0がリリースされました!全体の変更はこちらのタグから確認できます。
https://github.com/apache/iceberg/releases/tag/apache-iceberg-1.9.0

行レベルのリネージ

Row lineageは1.9.0未満のバージョンではV3の機能としてはオプショナルな扱いでしたが、1.9.0からは必須の機能となりました。スペックにエンジン側でnext-row-idフィールドの値を管理する必要があると書いてありますが、Icebergのライブラリを使って書き込みをしていれば、ライブラリ側でも管理してくれます。
https://github.com/apache/iceberg/pull/12781

カラムのデフォルト値のサポート

カラムのデフォルト値を管理するDefault valuesがリリースされました。スペックのページは https://iceberg.apache.org/spec/#default-values です。initial-defaultwrite-defaultという2つのプロパティで構成されています。initial-defaultはカラムを追加した際に、過去のデータのデフォルト値として利用されます。write-defaultはカラムを追加した際に、それ以降の書き込み時に利用されるデフォルト値です。
https://github.com/apache/iceberg/pull/12211

GEOMETRY型とGEOGRAPHY型の追加

  • geometry(C):線形または平面上の辺補間を用いたジオメトリです。
  • geography(C, A):非線形の辺補間を用いたジオメトリです。辺補間のアルゴリズムは引数Aにより定義されます。現在サポートされているアルゴリズムはSPHERICAL、VINCENTY、THOMAS、ANDOYER、KARNEYの5つです。

両者とも引数CはCRSを表しています。デフォルトはOGC:CRS84が利用されます。

https://github.com/apache/iceberg/pull/12346

パーティションレベルの統計情報

これまでPuffinファイルを用いたNDVの統計情報はテーブルレベルでのみ管理されていましたが、パーティションレベルでも管理できるようになります。
https://github.com/apache/iceberg/pull/11216

SigV4関連の修正

これまでRESTカタログでSigV4を有効化するにはrest.sigv4-enabled=trueと設定する形でしたが、それはレガシー扱いとなり、今後はrest.auth.type=sigv4で設定することが推奨されています。
https://github.com/apache/iceberg/pull/11995

ナノ精度のタイムスタンプ型のサポート

ナノ精度のタイムスタンプ型が各ファイルフォーマットでサポートされました。関連するPRは以下の通りです。https://github.com/apache/iceberg/pull/11775 で報告したとおり、Literalsクラスの実装は一部微妙なところがあり、クエリエンジンの実装の仕方によっては結果の不整合やオーバーフローになる可能性があるので、注意が必要です。

メタデータファイルのjsonファイルをun-prettyに変更

これまでメタデータファイルは改行や空白の入った見やすいpretty形式でしたが、ファイルサイズを削減するためにun-pretty形式に変更されました。
https://github.com/apache/iceberg/pull/12318

Spark 3.3のサポートを停止

1.8.0で廃止予定になっていたSpark 3.3が削除されました。
https://github.com/apache/iceberg/pull/12279

Discussion