次の方法で共有


Azure Databricks の Apache Iceberg とは

Von Bedeutung

Unity カタログ管理の Iceberg テーブルは、Databricks Runtime 16.4 LTS 以降の パブリック プレビュー で利用できます。 外部 Iceberg テーブルは、Databricks Runtime 16.4 LTS 以降でもパブリック プレビュー段階にあります。

Iceberg v3 の機能は、Databricks Runtime 17.3 以降の ベータ版 で利用できます。 Apache Iceberg v3 機能の使用を参照してください。

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

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

  • Unity カタログ
  • AWS Glue、Hive Metastore、Snowflake Horizon カタログなどの外部カタログ

Azure Databricks のすべての Iceberg テーブルは、開いている Iceberg テーブル形式の仕様に従います。 Iceberg テーブルの仕様を参照してください。

Unity カタログで Iceberg テーブルを作成する

Unity カタログで作成された Iceberg テーブルは、 Iceberg のマネージド テーブルです。 これらのテーブルは、次を使用して作成できます。

管理された Iceberg テーブルは、Azure Databricks プラットフォームの機能と完全に統合されています。 Unity カタログは、これらのテーブルのスナップショットの有効期限やファイル圧縮などのライフサイクル タスクを管理します。 管理された Iceberg テーブルでは、クエリのパフォーマンスを向上させる 液体クラスタリングもサポートされています。 予測最適化 により、これらのタスクが自動化され、ストレージ コストが削減され、クエリの速度が向上します。 Databricks では、Iceberg クライアント 1.9.2 以降を使用して Unity カタログの読み取りと書き込みを行うことをお勧めします。

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

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

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

外部システムを使用して Iceberg テーブルにアクセスする

Iceberg REST Catalog API を使用して、Unity カタログ内のすべての Iceberg テーブルにアクセスできます。 このオープン API は、さまざまな言語とプラットフォームにわたる外部 Iceberg エンジンからの読み取りと書き込みの操作をサポートします。 Apache Iceberg クライアントからの Azure Databricks テーブルへのアクセスに関するページを参照してください。

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

Iceberg テーブルの制限事項

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

  • Iceberg テーブルでは、Apache Parquet ファイル形式のみがサポートされます。
  • Azure Databricks では、Iceberg 仕様のバージョン 1、2、3 がサポートされています。
    • v3 固有の制限事項については、「 制限事項」を参照してください。
  • Iceberg v2 位置指定削除と等価ベース削除はサポートされていません。 代わりに、Azure Databricks では、行レベルの削除用に Iceberg v3 削除ベクトルがサポートされています。
  • 分岐とタグ付けはサポートされていません。 外部の Iceberg テーブルを読み取るときにアクセスできるのはメイン ブランチのみです。
  • パーティショニング:
    • パーティションの進化は、外部 Iceberg エンジンから対話する場合にのみ、マネージド Iceberg テーブルでサポートされます。
    • 外部 Iceberg テーブルでは、パーティションの進化はサポートされていません。
    • BINARYの種類によるパーティション分割はサポートされていません。
  • 次のデータ型はサポートされていません。
    • UUID
    • Fixed(L)
    • TIME
    • 必須フィールドを含む入れ子構造のSTRUCT
  • マネージド Iceberg テーブルでは、主キー制約または外部キー制約はサポートされていません。

マネージド Iceberg テーブルの制限事項

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

  • ベクター検索は、マネージド Iceberg テーブルではサポートされていません。
  • Iceberg では、 変更データ フィードはサポートされていません。 そのため、次のソースとしてマネージド Iceberg テーブルを読み取る場合、増分処理はサポートされません。
    • 具体化されたビューとストリーミング テーブル
    • データ プロファイリング
    • オンライン テーブル
    • Lakebase
    • データの分類
  • 管理された Iceberg テーブルは、テーブルのメンテナンスに 対して予測最適化 が有効になっている場合にのみ作成できます。
  • 次の表のプロパティは Unity カタログによって管理され、手動で設定することはできません。
    • write.___location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • テーブルの圧縮を変更する圧縮コーデックはサポートされていません。 既定では、すべてのテーブルで Zstd が使用されます。

外部 Iceberg テーブルの制限事項

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

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