Iceberg 1.9.0の変更点
Iceberg 1.9.0がリリースされました!全体の変更はこちらのタグから確認できます。
行レベルのリネージ
Row lineageは1.9.0未満のバージョンではV3の機能としてはオプショナルな扱いでしたが、1.9.0からは必須の機能となりました。スペックにエンジン側でnext-row-id
フィールドの値を管理する必要があると書いてありますが、Icebergのライブラリを使って書き込みをしていれば、ライブラリ側でも管理してくれます。
カラムのデフォルト値のサポート
カラムのデフォルト値を管理するDefault valuesがリリースされました。スペックのページは https://iceberg.apache.org/spec/#default-values です。initial-default
とwrite-default
という2つのプロパティで構成されています。initial-default
はカラムを追加した際に、過去のデータのデフォルト値として利用されます。write-default
はカラムを追加した際に、それ以降の書き込み時に利用されるデフォルト値です。
GEOMETRY型とGEOGRAPHY型の追加
-
geometry(C)
:線形または平面上の辺補間を用いたジオメトリです。 -
geography(C, A)
:非線形の辺補間を用いたジオメトリです。辺補間のアルゴリズムは引数Aにより定義されます。現在サポートされているアルゴリズムはSPHERICAL、VINCENTY、THOMAS、ANDOYER、KARNEYの5つです。
両者とも引数CはCRSを表しています。デフォルトはOGC:CRS84
が利用されます。
パーティションレベルの統計情報
これまでPuffinファイルを用いたNDVの統計情報はテーブルレベルでのみ管理されていましたが、パーティションレベルでも管理できるようになります。
SigV4関連の修正
これまでRESTカタログでSigV4を有効化するにはrest.sigv4-enabled=true
と設定する形でしたが、それはレガシー扱いとなり、今後はrest.auth.type=sigv4
で設定することが推奨されています。
ナノ精度のタイムスタンプ型のサポート
ナノ精度のタイムスタンプ型が各ファイルフォーマットでサポートされました。関連するPRは以下の通りです。https://github.com/apache/iceberg/pull/11775 で報告したとおり、Literalsクラスの実装は一部微妙なところがあり、クエリエンジンの実装の仕方によっては結果の不整合やオーバーフローになる可能性があるので、注意が必要です。
- Parquet: https://github.com/apache/iceberg/pull/12463
- ORC https://github.com/apache/iceberg/pull/12567
- Avro https://github.com/apache/iceberg/pull/12455
メタデータファイルのjsonファイルをun-prettyに変更
これまでメタデータファイルは改行や空白の入った見やすいpretty形式でしたが、ファイルサイズを削減するためにun-pretty形式に変更されました。
Spark 3.3のサポートを停止
1.8.0で廃止予定になっていたSpark 3.3が削除されました。
Discussion