DatabricksにおけるDelta LakeとApache Iceberg向けUnity Catalog マネージドテーブル
プレビュー
Unity Catalog マネージドテーブルは、 Delta Lake テーブルで一般提供されています。 Apache Iceberg テーブルの場合、この機能は パブリック プレビュー 段階であり、Databricks Runtime 16.4 LTS 以降で使用できます。
このページでは、Delta Lake と Apache Icebergのマネージドテーブル 、 Databricksのデフォルトおよび推奨テーブルタイプ Unity Catalog について説明します。これらのテーブルは、 Unity Catalogによって完全に管理および最適化され、パフォーマンス、運用上の利点、およびストレージとコストの削減を提供します 外部テーブル フォーリンテーブルと比較して、マネージドテーブルは読み取りと書き込みパターンから学習します。Unity Catalog は、マネージドテーブルの読み取り、書き込み、ストレージ、最適化のすべての責任を管理します。 「 外部テーブルをマネージド Unity Catalog テーブルに変換する」を参照してください。
マネージドテーブルのデータファイルは、それらを含むスキーマまたはカタログに格納されます。 「Unity Catalog で管理されたストレージの場所を指定する」を参照してください。
Databricks 、マネージドテーブルを使用して以下を活用することをお勧めします。
- ストレージとコンピュートのコストを削減します。
- すべてのクライアントタイプでクエリパフォーマンスが高速になります。
- 自動テーブルメンテナンスと最適化。
- オープンAPIを介した非Databricksクライアントへの安全なアクセス。
- Delta Lake および Iceberg 形式のサポート。
- 最新のプラットフォーム機能への自動アップグレード。
マネージドテーブルは、 Delta Lake クライアントと Iceberg クライアントからのアクセスを許可することで、相互運用性をサポートします。 APIは、オープンUnity Catalog とクレデンシャルベンディングを通じて、Trino、DuckDB、Apache Spark 、Daftなどの外部エンジンや、DremioなどのIceberg REST カタログ統合エンジンがマネージドテーブルにアクセスできるようにします。Delta Sharingはオープンソースプロトコルであり、外部パートナーやプラットフォームとのセキュリティで管理されたデータ共有を可能にします。
マネージドテーブルは、 Databricksでサポートされているすべての言語と製品で操作できます。 マネージドテーブルを作成、更新、削除、またはクエリするには、特定の権限が必要です。 Unity Catalog での特権の管理を参照してください。
マネージドテーブルへのすべての読み取りと書き込みでは、テーブル名とカタログ名およびスキーマ名 ( catalog_name.schema_name.table_name
など) を使用する必要があります。
このページでは、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 | いいえ。メタデータキャッシュは、マネージドテーブルに対して常に有効になっています。 | |
マネージドテーブルを ドロップ すると、 Databricks は 7 日後にクラウド ストレージ内のデータを削除し、ストレージ コストを削減します。 外部テーブルの場合は、手動でストレージバケットに移動してファイルを削除する必要があります。 | Yes | いいえ。マネージドテーブルの場合、ファイルは常に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;
読み取りと書き込みのパフォーマンスを維持するために、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 は、ドロップしたマネージドテーブルを7日間回復する UNDROP TABLE
コマンドをサポートしています。 7 日後、Databricks はクラウドテナントからの削除対象として基盤となるデータをマークし、自動テーブルメンテナンス中にファイルを削除します。「UNDROP」を参照してください。