🧊

Apache Iceberg 1.10.0 リリースノート

に公開

1.10.0はまだ公式にはリリースされていませんが、近日中にリリースされる予定なのでそのリリースノートです。

Deprecation / End of Support

  • Flink: バージョン1.18のサポートを削除 (#13191)
  • Common: DynConstructorsおよびDynMethodsクラスの内で非推奨となっていたメソッドをpublicからパッケージプライベートへ変更 (#13053)
  • AWS / Core / Flink / Parquet: 1.10.0対象の非推奨のコードを削除 (#12909)

Behavior change

  • Hive: 存在しないネームスペースをリストするとNoSuchNamespaceExceptionをスローするよう変更 (#13130)
    ※以前は空リストが返却されていた
  • Core: パーティション統計ファイルのフィールドIDがスペックに準拠していたなかったため修正 (#13329)

Spec

  • Table: 孤立したDeletion Vectorファイルを防ぐための書き込み要件を明確化 (#13042)
  • Table: geometry/geographyオブジェクトの最大値・最小値の挙動を明確化 (#12956)
  • Table: 暗号化キーを追加 (#12162)
  • Table: struct型のフィールドでカラムのデフォルト値が競合する問題を回避 (#12841)
  • REST: Row Lineageに関するフィールド(first-row-id, next-row-id)を追加 (#13010)
  • REST: 暗号化キーを追加 (#12987)
  • REST: V3テーブルではRow Lineageが常に有効であるため、Row Lineageを有効化するエンドポイントを削除 (#12986)
  • REST: 503を再試行不可としてマーク (#13619)

API

  • 暗号化用テーブルメタデータキーを追加 (#12927)
  • RowDelta.deleteFileメソッドを追加 (#12861)
  • ExpireSnapshots.cleanExpiredMetadataメソッドを追加 (#13509)
  • メトリクスの最大値・最小値で元の型を保持 (#13695)
  • identityパーティションでのtimestamp(9)を修正 (#13746)
  • timestampリテラル用のExpressionを作成するためのメソッドを追加 (#13747)

Core

  • JDBCカタログで起動中のテーブル作成時の競合を修正 (#13345)
  • RESTカタログ初期化失敗時にリソースをクローズ (#13384)
  • Core: パーティション統計ファイルのフィールドIDがスペックに準拠していたなかったため修正 (#13329)
  • パーティション進化やパーティションにNULLが含まれている際に、PartitionsTableが不完全なリストを返す問題を修正 (#12528)
  • パーティション統計情報のインクリメンタル更新をサポート (#12629)
  • ファイル書き換え時の最大数を設定するオプションを追加 (#12824)
  • Parquetファイルのカラム統計を有効化するwrite.parquet.stats-enabled.column.テーブルプロパティを追加 (#12770)
  • 現在のスキーマで削除されたパーティションフィールドを無視 (#11868)
  • データファイル書き換え時に孤立したDeletion Vectorを削除 (#13245)
  • パーティション統計でDeletion Vectorをサポート (#13425)
  • 孤立したDeletion Vectorをクリーンアップするため削除対象データファイルを追跡 (#13222)
  • BaseTransactionでコミットがされなかったファイル削除にSupportsBulkOperationsを使用 (#13653)
  • BaseFileequalityFieldIdsにゼロコピーラッパーを使用 (#13212)
  • BaseDVFileWriterが空のPuffinファイルを作成しないよう修正 (#13666)
  • ExpireSnapshotsでまだ参照されているデータファイルが誤って削除される問題を修正 (#13614)
  • write.metadata.metrics.max-inferred-column-defaultsプロパティがネストカラムを考慮するよう修正 (#13039)
  • timestamp(9)SingleValueParserでサポート (#13487)
  • FileURIおよびFileSystemWalkerクラスを追加 (#13429)
  • Cherry-PickもしくはFast-Forwardでパーティションを検証する際にParallelIterableで新規ファイルをバッチロードするよう修正 (#13556)
  • FindFilesクラスでParallelIterableを利用できるようplanWithメソッドを追加 (#13836)
  • REST: ParserContextクラスを追加 (#13191)
  • REST: HTTPクライアントでユーザーエージェントを設定できるプロパティを追加 (#13234)
  • REST: RESTクライアントで TLS 設定を構成できるオプションを追加 (#13190)
  • REST: テーブルが破損しないよう502や504での再試行を停止 (#13352)
  • REST: RESTクライアントでHTTPプロキシをサポート (#12406)
  • REST: RESTMetricsReporterクラスにおけるメトリクスのアナウンスを非同期化 (#13507)
  • REST: 一部のステータスコードに対して冪等なリクエストの再試行を許可 (#13449)
  • REST: 認証情報を更新する際のScheduledExecutorServiceを追加 (#12563)
  • REST: OAuth 2.0のToken Exchangeを無効化できるようtoken-exchange-enabledプロパティを追加 (#13809)
  • REST: スキャンプランニング用のリクエスト/レスポンスモデルとパーサーを追加 (#13004)

Arrow

  • Parquet V2をサポートするようリファクタリング (#13290)
  • DELTA_BINARY_PACKED Parquetエンコーディングをサポート (#13391)
  • timestamp(9)型をサポート (#13562)
  • 異なるエンコードが混在しているParquetファイルをベクトル化されたリーダーで読み込んだ際にネイティブメモリがリークする問題を修正 (#13935)

Parquet

  • Parquet 1.16.0で追加されたLogicalTypeAnnotationをVariant型で使用 (#13941)

Spark

  • Spark 4.0をサポート (#12494)
  • V3: AvroリーダーでRow Lineageをサポート (#13070)
  • V3: Parquetベクトル化されたリーダーでRow Lineageをサポート (#12928)
  • streaming-max-rows-per-micro-batchをソフトリミットに変更 (#12988)
  • V3: 分散プランニングにおけるRow Lineageを修正 (#13061)
  • Storage Partition Join (SPJ)にバケットおよび時間単位のリデューサーを追加 (#13166, #13167)
  • RewriteTablePathのインクリメンタルモードでスナップショットIDによるファイルをフィルタリングするよう修正 (#12885)
  • identifierフィールドを使用しているテーブルでDMLが失敗する問題を修正 (#13535)
  • パーティション統計情報を取得するComputePartitionStatsSparkActionアクションとcompute_partition_statsプロシージャを追加 (#12450, #13480)
  • ADD COLUMNでカラムのデフォルト値が指定されると例外をスローするよう修正 (#13464)
  • 4.0: IcebergのストアドプロシージャをSparkのビルトインの実装へと以降 (引数がCase Sensitiveになり、Type Coercionがより厳格になります) (#13106)
  • RewriteTablePathSparkActionでファイルリスト書き込みにIcebergのFileIOを使用 (#13459)
  • ParquetファイルでDictionary EncodingされたUUID型でをサポート (#13324)
  • 4.0: Row Lineageをサポート (#13310)
  • パーティションからインポートするマニフェストの削除にSupportsBulkOperationsを使用 (#13620)
  • コンパクション時にRow Lineageを保持するよう修正 (#13555)
  • Variant型の読み取りをサポート (#13219)
  • ファイルを削除する際のExecutorキャッシュを無効化するspark.sql.iceberg.executor-cache.delete-files.enabledプロパティを追加 (#12893)
  • RewriteManifestでパーティションのソート順を指定可能に (#12840)
  • 4.0: Unknown型の読み書きをサポート (#13445)
  • Flink 2.0をサポート (#12527)
  • 動的シンク: 動的スキーマ・パーティション進化・テーブル作成対応 (#12424)
  • TableSchemaからResolvedSchemaへの移行 (#13072)
  • IcebergSink v2: デフォルトのライタータスク並列度を入力ストリームと同じ値になるよう設定 (#13260)
  • v2シンクでコンパクションをサポート (#12979)
  • v2シンクでデータファイルの書き換えをサポート (#11497)
  • RANGEディストリビューションを v2シンクに移植 (#12071)
  • Zookeeperロックをテーブルメンテナンスでサポート (#12810)
  • RewriteDataFilesで書き換え対象を指定するためのフィルターを追加 (#13669)
  • JdbcLockFactoryResultSetリソースがリークする問題を修正 (#13821)
  • テーブルメンテナンスで孤立ファイル削除をサポート (#13302)

Hive

  • 存在しないネームスペースをリストするとNoSuchNamespaceExceptionをスローするよう変更 (#13130)

Kafka Connect

Vendor Integrations

  • AWS/GCP: プレフィックス付きクライアントを初期化する際のダブルチェックロックによる競合を修正 (#13276)
  • AWS/GCP: 空のイミュータブルコレクションによってFileIOがシリアライズできない問題を修正 (#13216)
  • AWS: 複数ストレージ認証プレフィックスをサポート (#12799)
  • AWS: S3クライアントにLegacyMd5Pluginを追加 (#12264)
  • AWS: S3V4RestSignerClientが認証セッションを過剰に作成する問題を修正 (#13215)
  • AWS: KeyManagementClient実装を追加 (#13136)
  • AWS: deleteOnExitメソッドによるメモリリークの修正 (#13749)
  • AWS/Azure: S3InputStream.readFullyメソッドによるコネクションリークの修正 (#13899, #13905)
  • Azure: 認証情報が同時に更新された際に発生するエラーを修正 (#13730)
  • Azure: adls.tokenプロパティを利用したアクセストークン認証をサポート (#13825)
  • GCP: BigQueryメタストアカタログを追加 (#12808)
  • GCP: 複数ストレージ認証プレフィックスをサポート (#12881)
  • GCP: Google認証サポートの追加 (#13212)
  • GCP: KeyManagementClient実装 (#13334)

Dependencies

  • Parquet: 1.15.1 → 1.16.0
  • Jackson: 2.19.0 → 2.19.1
  • AWS SDK: 2.31.30 → 2.31.63
  • Netty: 4.2.1.Final → 4.2.2.Final
  • Comet: 0.5.0 → 0.8.1
  • Apache httpclient: 5.4.3 → 5.4.4

Discussion