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.