メインコンテンツまでスキップ

Databricks の Apache Iceberg とは?

備考

プレビュー

Unity Catalog で管理される Apache Iceberg テーブルは、Databricks Runtime 16.4 LTS 以降で パブリック プレビュー で利用できます。外国の Iceberg テーブルは、Databricks Runtime 16.4 LTS 以降でもパブリック プレビュー段階にあります。

Apache Iceberg は、アナリティクス ワークロード用のオープンソース テーブル形式です。スキーマ進化、タイムトラベル、隠しパーティション分割などの機能をサポートしています。 Delta Lakeと同様に、Iceberg は、オブジェクトストレージに格納されたデータに対するACIDトランザクションを可能にする抽象化レイヤーを提供します。Databricks は、Apache Parquet ファイル形式を使用する Iceberg テーブルをサポートしています。Iceberg は、テーブルの変更ごとに新しいメタデータ ファイルを書き込むことで、原子性と一貫性を維持します。

Iceberg カタログは、Iceberg テーブル アーキテクチャの最上位レイヤーです。テーブルの作成、削除、名前変更などの操作を処理します。その主な役割は、テーブルがロードされるときに現在のメタデータを提供することです。Databricks は、以下によって管理される Iceberg テーブルをサポートしています。

Databricks のすべての Iceberg テーブルは、オープンな Iceberg テーブル形式の仕様に準拠しています。Icebergテーブルの仕様を参照してください。

Unity Catalog で Iceberg テーブルを作成する

Unity Catalog で作成された Iceberg テーブルは、 マネージド Iceberg テーブルです。これらのテーブルは、次の方法で作成できます。

マネージド Iceberg テーブルは、Databricks プラットフォーム機能と完全に統合されています。Unity Catalog は、これらのテーブルでのスナップショットの有効期限やファイルの圧縮などのライフサイクル タスクを管理します。マネージド Iceberg テーブルは 、クエリのパフォーマンスを向上させるリキッドクラスタリングもサポートしています。予測的最適化 は、これらのタスクを自動化して、ストレージコストを削減し、クエリ速度を向上させます。

他のカタログによって管理されている Iceberg テーブルの読み取り

外部 Iceberg テーブルは、Unity Catalog の外部のカタログによって管理される Iceberg テーブルです。外部カタログには、テーブルの現在のメタデータが格納されます。Databricks は 、レイクハウスフェデレーション を使用してメタデータを取得し、オブジェクトストレージからテーブルを読み取ります。

外部 Iceberg テーブルは Databricks では読み取り専用であり、プラットフォームのサポートは制限されています。

外部システムを使用した Iceberg テーブルへのアクセス

Iceberg REST Catalog API を使用して、Unity Catalog 内のすべての Iceberg テーブルにアクセスできます。このオープン API は、さまざまな言語やプラットフォーム間で、外部の Iceberg エンジンからの読み取りおよび書き込み操作をサポートします。「Apache Iceberg クライアントから Databricks テーブルにアクセスする」を参照してください。

REST カタログは、基盤となるストレージにアクセスするための一時的な資格情報を外部エンジンに配信する資格情報の自動販売をサポートしています。詳細については、「 外部システム アクセス用の Unity Catalog 資格情報の販売」を参照してください。

Iceberg テーブルの制限

Databricks の Iceberg テーブルには次の制限が適用され、変更される可能性があります。

  • Iceberg テーブルは、Apache Parquet ファイル形式のみをサポートします。
  • Databricks は、Apache Iceberg 仕様のバージョン 1 と 2 をサポートしていますが、次の例外があります。
    • 行レベルの削除 (位置の削除や等値ベースの削除など) はサポートされていません。
    • 分岐とタグ付けはサポートされていません。外国の Iceberg テーブルを読み取るときには、メインブランチのみにアクセスできます。
    • パーティションの進化は、外部の Iceberg エンジンから対話する場合にのみ、マネージド Iceberg テーブルでサポートされます。外部の Iceberg テーブルはパーティションの進化をサポートしていません。
    • 次のデータ型はサポートされていません。
      • UUID
      • Fixed(L)
      • TIME

Managed Iceberg テーブルの制限

次の制限は、特にマネージド Iceberg テーブルに適用されます。

  • ベクトル検索は、マネージド Iceberg テーブルではサポートされていません。
  • Apache Iceberg は チェンジデータフィードをサポートしていません。 その結果、Managed Iceberg テーブルを次のソースとして読み取る場合、インクリメンタル処理はサポートされません。
    • マテリアライズドビュー and ストリーミングテーブル
    • レイクハウスモニタリング
    • オンラインテーブル
    • レイクベース
    • データの分類

外部 Iceberg テーブルの制限

次の制限は、特に外国の Iceberg テーブルに適用されます。

  • タイムトラベルは、以前に Databricks で読み取られた Iceberg スナップショット (つまり、 SELECT ステートメントが実行されたスナップショット) でのみサポートされます。
  • Iceberg パーティション分割にバケット変換関数を使用すると、条件付きフィルターを使用するとクエリのパフォーマンスが低下する可能性があります。
  • Amazon S3 などのクラウドストレージ階層化製品は、外部の Iceberg テーブルと統合されていません。Databricks で外部の Iceberg テーブルにアクセスすると、低コストのストレージ階層にアーカイブされたデータを復元できます。
  • 専用アクセス・モード・クラスタリングでは、Iceberg・テーブルに対する読み取りおよびREFRESH FOREIGN TABLE操作にはALL PRIVILEGESが必要です。