Unity Catalog マネージドテーブル in Databricks for Delta Lake and Apache Iceberg
プレビュー
Unity Catalog マネージドテーブルは、 Delta Lake テーブルで一般提供されています。 Apache Iceberg テーブルの場合、この機能は パブリック プレビュー 段階であり、Databricks Runtime 16.4 LTS 以降で使用できます。
このページではUnity CatalogDelta Lake と Apache Icebergのマネージドテーブル、Databricksのデフォルトおよび推奨テーブルタイプについて説明します。これらのテーブルは、 Unity Catalogによって完全に管理および最適化されており、パフォーマンス、運用上の利点、 および外部 および フォーリンテーブルと比較してストレージとコンピュートのコストが削減されます。これは、マネージドテーブルが読み取りと書き込みのパターンから学習するためです。 Unity Catalog マネージドテーブルの読み取り、書き込み、ストレージ、最適化のすべての責任を管理します。
マネージドテーブルのデータファイルは、それらを含むスキーマまたはカタログに格納されます。 「Unity Catalog で管理されたストレージの場所を指定する」を参照してください。
Databricks 、マネージドテーブルを使用して以下を活用することをお勧めします。
- ストレージとコンピュートのコストを削減します。
- すべてのクライアントタイプでクエリパフォーマンスが高速になります。
- 自動テーブルメンテナンスと最適化。
- Databricksオープン を介した非APIs クライアントへの安全なアクセス。
- Delta Lake および Iceberg 形式のサポート。
- 最新のプラットフォーム機能への自動アップグレード。
マネージドテーブルは、 Delta Lake クライアントと Iceberg クライアントからのアクセスを許可することで、相互運用性をサポートします。 APIsは、オープンUnity Catalog とクレデンシャルベンディングを通じて、Trino、DuckDB、Apache Spark 、Daftなどの外部エンジンや、DremioなどのIcebergREST カタログ統合エンジンがマネージドテーブルにアクセスできるようにします。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 サードパーティツールとの相互運用性を確保します。
機能 | 利点 |
---|---|
予測的最適化 | AIを使用してデータレイアウトとコンピュートを最適化し、コンピュートのサイズを自動的に調整し、ビンパッキングジョブで最大の効率を実現し、結果をログに記録して何が起こったかを観察できるようにします。 予測的最適化 automatically 実行: - |
Automatic リキッドクラスタリング | データは、テーブル クエリ アクセス パターンに基づいて最も効率的に自動的にクラスター化されるため、すべてのクライアント (Databricks と Databricks 以外) のクエリ速度が向上します。自動リキッドクラスタリングを参照してください。 |
自動統計 | 統計収集は、効率的なデータスキップと結合戦略を実装することにより、クエリのパフォーマンスを向上させます。Databricksは、列の最小値と最大値などの重要な統計を自動的に収集し、クエリの実行中に無関係なファイルを特定し、それらを除外できます。これにより、計算のオーバーヘッドが削減されます。Unity Catalog 外部テーブルは、デフォルトによる最初の 32 列に基づいて統計を生成しますが、 Unity Catalog マネージドテーブルは、クエリ ワークロードに最も関連性の高い列の統計を動的に収集します。 |
メタデータのキャッシング | トランザクション メタデータのインメモリ キャッシュにより、クラウド上に格納されたトランザクション ログへの要求を最小限に抑えます。 この機能により、クエリのパフォーマンスが向上します。 |
ファイルサイズの最適化 | Databricks は、バックグラウンドで数千もの本番運用デプロイメントから収集されたデータから学習することで、ファイルサイズを適切なサイズに自動的に圧縮します。 Databricks は、ターゲット ファイル サイズを自動的に決定し、それらのファイル サイズにより適合するように書き込みを調整するため、クエリのパフォーマンスを向上させ、ストレージ コストを節約できます。「 データ ファイル サイズを制御するための Delta Lake の構成」を参照してください。 |
| マネージドテーブルを DROP すると、データは7日後にクラウドストレージに自動的に削除されるため、ストレージコストが削減されます。 外部テーブルの場合は、手動でストレージバケットに移動してファイルを削除する必要があります。 |
マネージドテーブルを作成する
次の 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でマネージドテーブルを作成するために使用できる多くのパターンの一部を示しています。
必要な権限
マネージドテーブルを作成するには、次のものがあることを確認します。
USE SCHEMA
テーブルの親スキーマに対するアクセス許可。USE CATALOG
テーブルの親カタログに対するアクセス許可。CREATE TABLE
テーブルの親スキーマに対するアクセス許可。
マネージドテーブルをドロップする
テーブルの所有者であるか、マネージドテーブルを削除する MANAGE
権限を持っている必要があります。 マネージドテーブルを削除するには、次の SQL コマンドを実行します。
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Unity Catalog は、ドロップしたマネージドテーブルを7日間回復する UNDROP TABLE
コマンドをサポートしています。 7 日後、Databricks はクラウドテナントからの削除対象として基盤となるデータをマークし、自動テーブルメンテナンス中にファイルを削除します。「UNDROP」を参照してください。