次の方法で共有


Azure Databricks for Delta Lake と Apache Iceberg の Unity カタログ マネージド テーブル

Important

Unity カタログのマネージド テーブルは、Delta Lake テーブルで一般提供されています。 Apache Iceberg テーブルの場合、この機能は パブリック プレビュー 段階であり、Databricks Runtime 16.4 LTS 以降で使用できます。

このページでは、Delta Lake と Apache Iceberg の Unity カタログマネージド テーブルについて説明します。これは、Azure Databricks の既定の推奨テーブルの種類です。 これらのテーブルは Unity カタログによって完全に管理および最適化されており、読み取りと書き込みのパターンからマネージド テーブルが学習されるため、パフォーマンス、運用上の利点、および外部テーブルと比較してストレージとコンピューティングコストが低くなります。 Unity カタログは、マネージド テーブルのすべての読み取り、書き込み、ストレージ、および最適化の責任を管理します。 外部テーブルからの Unity カタログマネージド テーブルへの変換を参照してください。

マネージド テーブルのデータ ファイルは、それらを含むスキーマまたはカタログに格納されます。 「Unity Catalog の管理されたストレージの場所の指定」を参照してください。

Databricks では、マネージド テーブルを使用して次の利点を活用することをお勧めします。

  • ストレージとコンピューティングのコストの削減。
  • すべてのクライアントの種類のクエリ パフォーマンスが向上します。
  • テーブルの自動メンテナンスと最適化。
  • 開いている API を使用して Databricks 以外のクライアントのアクセスをセキュリティで保護します。
  • Delta Lake および Iceberg 形式のサポート。
  • 最新のプラットフォーム機能への自動アップグレード。

マネージド テーブルは、Delta Lake と Iceberg クライアントからのアクセスを許可することで相互運用性をサポートします。 オープン API と資格情報の自販を通じて、Unity Catalog を使用すると、Trino、DuckDB、Apache Spark、Daft、Dremio などの Iceberg REST カタログ統合エンジンなどの外部エンジンがマネージド テーブルにアクセスできるようになります。 オープン ソース プロトコルである Delta Sharing を使用すると、外部パートナーやプラットフォームとのセキュリティで保護された管理されたデータ共有が可能になります。

Azure Databricks でサポートされているすべての言語と製品でマネージド テーブルを操作できます。 マネージド テーブルの作成、更新、削除、クエリを実行するには、特定の権限が必要です。 「Unity Catalog の特権の管理」を参照してください。

マネージド テーブルに対するすべての読み取りと書き込みでは、テーブル名とカタログ名とスキーマ名 (たとえば、 catalog_name.schema_name.table_name) を使用する必要があります。

Note

このページでは、Unity カタログのマネージド テーブルについて説明します。 レガシ Hive メタストアのマネージド テーブルについては、レガシ Hive メタストアのデータベース オブジェクトに関する説明を参照してください。

Unity カタログのマネージド テーブルを使用する理由

Unity カタログのマネージド テーブルでは、自動クラスタリング、ファイル サイズの圧縮、インテリジェントな統計収集などの AI 駆動型テクノロジを使用して、ストレージ コストとクエリ速度が自動的に最適化されます。 次の表は、自動バキュームやメタデータ キャッシュなどの機能を使用してデータ管理を簡素化すると同時に、Delta および Iceberg のサード パーティ製ツールとの相互運用性を確保します。

Feature Benefits
Predictive optimization AI を使用してデータ レイアウトとコンピューティングを最適化します。これは、コンピューティングのサイズを自動的に設定し、ジョブをビンパックして効率を最大限に高め、何が起こったかを確認できるように結果をログに記録します。
予測最適化が自動的に実行されます。

この機能により、ストレージ サイズを節約することで、コンピューティングとストレージのコストが削減されます。 「Unity Catalog 管理テーブルの予測最適化」を参照してください。
自動液体クラスタリング テーブル クエリ アクセス パターンに基づいて、データは最も効率的に自動的にクラスター化されます。これにより、すべてのクライアント (Databricks と Databricks 以外) のクエリ速度が向上します。 自動液体クラスタリングを参照してください。
Automatic statistics 統計収集では、効率的なデータスキップと結合の戦略を実装することで、クエリのパフォーマンスが向上します。 列の最小値や最大値などの重要な統計を自動的に収集する Azure Databricks では、無関係なファイルを判断し、クエリの実行中にそれらを除外できます。 これにより、計算オーバーヘッドが削減されます。 既定では最初の 32 列に基づいて統計を生成する Unity カタログ外部テーブル。一方、Unity カタログのマネージド テーブルでは、クエリ ワークロードに最も関連する列の統計が動的に収集されます。
Metadata caching クラウドに格納されているトランザクション ログへの要求を最小限に抑えるために、トランザクション メタデータのメモリ内キャッシュ。 この機能により、クエリのパフォーマンスが向上します。
ファイル サイズの最適化 Azure Databricks では、バックグラウンドで何千もの運用デプロイから収集されたデータから学習することで、ファイル サイズが適切なサイズに自動的に圧縮されます。 Azure Databricks は、ターゲット ファイル サイズを自動的に決定し、それらのファイル サイズに合わせて書き込みを調整します。これは、クエリのパフォーマンスを向上させ、ストレージ コストを節約するのに役立ちます。 「データ ファイル サイズを制御するように Delta Lake を構成する」を参照してください。
DROP TABLE マネージド テーブルを 削除 すると、7 日後にクラウド ストレージ内のデータが自動的に削除され、ストレージ コストが削減されます。 外部テーブルの場合は、ストレージ バケットに手動で移動し、ファイルを削除する必要があります。

マネージド テーブルを作成する

マネージド テーブルを作成するには、次のものが必要です。

  • テーブルの親スキーマに対する USE SCHEMA
  • テーブルの親カタログに対する USE CATALOG
  • テーブルの親スキーマに対する CREATE TABLE

SQL を使用して空のマネージド テーブルを作成するには、次の SQL 構文を使用します。 プレースホルダー値を次のように置き換えます。

  • <catalog-name>: テーブルを含むカタログの名前。
  • <schema-name>: テーブルを含むスキーマの名前。
  • <table-name>: テーブルの名前。
  • <column-specification>: 各列の名前とデータ型。
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

読み取りと書き込みのパフォーマンスを維持するために、Azure Databricks は、管理された Iceberg テーブルメタデータを最適化する操作を定期的に実行します。 このタスクは、Iceberg テーブルに対する MODIFY アクセス許可を持つサーバーレス コンピューティングを使用して実行されます。 この操作はテーブルのメタデータにのみ書き込み、コンピューティングはジョブの期間中、テーブルに対するアクセス許可のみを保持します。

Note

Iceberg テーブルを作成するには、 USING icebergを明示的に指定します。 それ以外の場合、Azure Databricks は既定で Delta Lake テーブルを作成します。

クエリ結果または DataFrame 書き込み操作からマネージド テーブルを作成できます。 次の記事では、Azure Databricks でマネージド テーブルを作成するために使用可能な多数のパターンの一部を示します。

マネージド テーブルをドロップする

マネージド テーブルを削除するには、次が必要です。

  • テーブルに対する MANAGE または、テーブルの所有者である必要があります。
  • テーブルの親スキーマに対する USE SCHEMA
  • テーブルの親カタログに対する USE CATALOG

マネージド テーブルをドロップするには、次の SQL コマンドを実行します:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog では、削除されたマネージド テーブルを 7 日間復旧する UNDROP TABLE コマンドがサポートされています。 7 日後、Azure Databricks は、基になるデータをクラウド テナントから削除するようにマークし、自動テーブルメンテナンス中にファイルを削除します。 See UNDROP.