DatabricksにおけるDelta LakeとApache Iceberg向けUnity Catalog マネージドテーブル
プレビュー
Unity Catalog マネージドテーブルは、 Delta Lake テーブルで一般提供されています。 Apache Iceberg テーブルの場合、この機能は パブリック プレビュー 段階であり、Databricks Runtime 16.4 LTS 以降で使用できます。
このページでは、 Databricksで確実かつ推奨されるテーブル タイプであるDelta LakeおよびApache IcebergのUnity Catalogマネージドテーブルについて説明します。 これらのテーブルはUnity Catalogによって完全に管理および最適化されており、マネージドテーブルは読み取りおよび書き込みパターンから学習するため、パフォーマンス、運用上の利点があり、外部のフォーリンテーブルと比較してストレージとコンピュートのコストが低くなります。 Unity Catalog 、マネージドテーブルの読み取り、書き込み、ストレージ、および最適化の責任をすべて管理します。 「外部テーブルをマネージドUnity Catalogテーブルに変換する」を参照してください。
マネージドテーブルのデータファイルは、それらを含むスキーマまたはカタログに格納されます。 「Unity Catalog で管理されたストレージの場所を指定する」を参照してください。
Databricks 、マネージドテーブルを使用して以下を活用することをお勧めします。
- ストレージとコンピュートのコストを削減します。
- すべてのクライアントタイプでクエリパフォーマンスが高速になります。
- 自動テーブルメンテナンスと最適化。
- オープンAPIを介した非Databricksクライアントへの安全なアクセス。
- Delta Lake および Iceberg 形式のサポート。
- 最新のプラットフォーム機能への自動アップグレード。
マネージドテーブルは、 Delta LakeおよびIcebergクライアントからのアクセスを許可することで相互運用性をサポートします。 Unity Catalog 、オープンAPIsと認証情報販売を通じて、Trino、DuckDB、 Apache Spark 、Daft、 Iceberg RESTカタログ統合エンジン (Dremio など) などの外部エンジンがマネージドテーブルにアクセスできるようにします。 オープンAPIsをサポートしていない外部クライアントの場合は、互換Modeを使用して、 Delta LakeまたはIcebergクライアントを使用してマネージドテーブルを読み取ることができます。 オープンソース プロトコルであるDelta Sharing は、外部のパートナーやプラットフォームとの安全で管理されたデータ共有を可能にします。
マネージドテーブルは、 Databricksでサポートされているすべての言語と製品で操作できます。 マネージドテーブルを作成、更新、削除、またはクエリするには、特定の権限が必要です。 Unity Catalog での特権の管理を参照してください。
このページでは、Unity Catalog マネージドテーブル に焦点を当てています。 レガシーHive metastoreのマネージドテーブルについては、レガシーHive metastoreのデータベースオブジェクトを参照してください。
Unity Catalog のマネージドテーブルを使用する理由
Unity Catalog マネージドテーブルは、自動クラスタリング、ファイルサイズの圧縮、インテリジェントな統計収集などの AI駆動型テクノロジーを使用して、ストレージコストとクエリ速度を自動的に最適化します。 これらのテーブルは、自動 vacuum やメタデータキャッシングなどの機能でデータマネジメントを簡素化すると同時に、 Delta や Iceberg サードパーティツールとの相互運用性を確保します。
以下の機能は Unity Catalog マネージドテーブルに固有のもので、外部テーブルとフォーリンテーブルでは使用できません。
機能 | 利点 | デフォルトで有効になっていますか? | 設定。 |
|---|---|---|---|
AIを使用してデータレイアウトとコンピュートを自動的に最適化するため、マネージドテーブルの操作を手動で処理する必要はありません。Databricks は、すべてのマネージドテーブルに対して予測的最適化を有効にして、ストレージとコストを削減することをお勧めします。 予測的最適化の自動実行: - | はい、2024 年 11 月 11 日以降に作成されたすべての新規アカウントについてです。 現在のアカウントについては、 Databricks のロールアウトを開始しています 予測的最適化 によって デフォルト。 予測 的最適化が有効になっているかどうかを確認するを参照してください。 | はい。予測 的最適化を有効にするを参照してください。 | |
予測的最適化のテーブルの場合、自動リキッドクラスタリングを有効にすると、Databricksはクラスタリングキーをインテリジェントに選択できます。クエリ パターンが変化すると、Databricks はクラスタリング キーを自動的に更新して、パフォーマンスを向上させ、コストを削減します。 | No | はい。「 リキッドクラスタリングを有効にする」を参照してください。 | |
トランザクションメタデータのインメモリキャッシュは、クラウド上で保存されているトランザクションログへの要求を最小限に抑えることで、クエリのパフォーマンスを向上させます。 この機能により、クエリのパフォーマンスが向上します。 | Yes | いいえ。メタデータキャッシュは、マネージドテーブルに対して常に有効になっています。 | |
マネージドテーブルを DROP すると、 Databricks 8 日後にクラウド ストレージ内のデータを削除し、ストレージ コストを削減します。 外部テーブルの場合は、ストレージ バケットに手動で移動してファイルを削除する必要があります。 | Yes | いいえ。マネージドテーブルの場合、ファイルは常に 8 日後に自動的に削除されます。 |
外部システムを使用して Databricks データにアクセスする
マネージドテーブルは、 Delta LakeおよびIcebergクライアントからのアクセスを許可することで相互運用性をサポートします。 Unity Catalog 、オープンAPIsと認証情報販売を通じて、Trino、DuckDB、 Apache Spark 、Daft、 Iceberg RESTカタログ統合エンジン (Dremio やSnowflakeなど) などの外部エンジンがマネージドテーブルにアクセスできるようにします。 サポートされている外部エンジンのリストについては統合を参照してください。このリストに含まれていない場合は、エンジンのドキュメントを確認してください。
Unity Catalogマネージド テーブルは、 Iceberg REST Catalog (IRC) を介して外部システムから読み取りおよび書き込みが可能で、ガバナンスとセキュリティ制御を維持しながら、 Databricks以外のツールとのシームレスな統合を実現します。 Delta クライアントは読み取りのみをサポートします。
さらに、 Delta Sharing 、外部パートナーやプラットフォームへの安全かつ管理されたデータ アクセスを可能にするオープンソース プロトコルです。 Delta Sharing を使用すると、パートナーに一時的な読み取り専用アクセスを許可できます。
マネージドテーブルへのすべての読み取りと書き込みでは、テーブル名とカタログ名、および存在するスキーマ名を使用する必要があります。 たとえば、 catalog_name.schema_name.table_name 。パスベースのアクセスは、 Unity Catalogアクセス制御をバイパスし、マネージドテーブルの機能が適切に動作しなくなるため、推奨されません。
マネージドテーブルを作成する
マネージドテーブルを作成するには、次のものが必要です。
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;
読み取りと書き込みのパフォーマンスを維持するために、Databricks はマネージド Iceberg テーブルのメタデータを最適化する操作を定期的に実行します。このタスクは、Iceberg テーブルに対するMODIFY権限を持つサーバレス コンピュートを使用して実行します。このオペレーションはテーブルのメタデータにのみ書き込みを行い、コンピュートはジョブの実行期間中のみテーブルへのアクセス許可を保持します。
Iceberg テーブルを作成するには、 USING icebergを明示的に指定します。それ以外の場合、 Databricks は デフォルト によって Delta Lake テーブルを作成します。
マネージドテーブルは、クエリ結果から作成することも、 DataFrame 書き込み操作から作成することもできます。 次の記事では、 Databricksでマネージドテーブルを作成するために使用できる多くのパターンの一部を示しています。
マネージドテーブルをドロップする
マネージドテーブルを削除するには、次のものが必要です。
MANAGEテーブル上に表示されるか、テーブルの所有者である必要があります。USE SCHEMAテーブルの親スキーマ上。USE CATALOGテーブルの親カタログ。
マネージドテーブルを削除するには、次のSQLコマンドを実行します。
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Unity Catalogドロップされたマネージドテーブルを 8 日間復元するためのUNDROP TABLEコマンドをサポートしています。 8 日後、Databricks は基になるデータをクラウド テナントから削除対象としてマークし、自動テーブル メンテナンス中にファイルを削除します。UNDROP を参照してください。