Unity Catalog ボリュームのパス規則とアクセス
このページでは、Unity Catalog のパスの重複に関する制限事項について説明し、Unity Catalog オブジェクト内のデータ ファイルのパスベースのアクセス パターンについて詳しく説明し、Unity Catalog がテーブルとボリュームのパスを管理する方法について説明します。
Unity Catalog のパスの重複の制限
Unity Catalog は、データの管理ディレクトリが重複するのを防ぐことで、データガバナンスを強化します。 Unity Catalog では、次のルールが適用されます。
- 外部ロケーションは、他の外部ロケーションと重なることはできません。
- テーブルとボリュームは、外部ロケーションまたはメタストアのルートロケーションにデータ ファイルを格納します。
- ボリュームは、他のボリュームとオーバーラップすることはできません。
- テーブルを他のテーブルと重複させることはできません。
- テーブルとボリュームを互いに重ねることはできません。
- 管理対象ストレージの場所を互いに重複させることはできません。「 Unity Catalog でマネージド ストレージの場所を指定する」を参照してください。
- 外部ボリュームは、管理対象ストレージの場所と重複することはできません。
- 外部テーブルは、管理対象ストレージの場所と重複することはできません。
これらのルールは、Unity Catalog に次の制限が存在することを意味します。
- 別の外部ロケーション内に外部ロケーションを定義することはできません。
- 別のボリューム内でボリュームを定義することはできません。
- 別のテーブル内でテーブルを定義することはできません。
- ボリューム内のデータファイルまたはディレクトリにテーブルを定義することはできません。
- テーブル内のディレクトリにボリュームを定義することはできません。
パスベースのアクセスを使用して、Delta Lake を含むボリュームからデータ ファイルを書き込んだり読み取ったりすることができます。これらのデータ ファイルを Unity Catalog メタストアにテーブルとして登録することはできません。
テーブルとボリュームのフルマネージドパス
マネージドテーブルまたはマネージドボリュームを作成すると、 Unity Catalog は、それらを格納するスキーマに関連付けられた Unity Catalogによって構成済みのストレージ・ロケーションに新しいディレクトリーを作成します。 このディレクトリの名前は、すでに存在する他のディレクトリとの潜在的な衝突を回避するためにランダムに生成されます。
この動作は、 Hive metastore がマネージ テーブルを作成する方法とは異なります。 Databricks では、常にテーブル名を使用して Unity Catalog マネージド テーブルを操作し、ボリューム パスを使用して Unity Catalog マネージド ボリュームを操作することをお勧めします。
表とボリュームの外部ロケーション・パス
外部テーブルまたはボリュームを作成するときは、 Unity Catalogによって管理される外部ロケーション内のパスを指定します。
パスの競合を回避するために、外部ロケーションのルートではなく、サブディレクトリに外部テーブルとボリュームを作成することを Databricks 推奨します。
使いやすくするために、テーブル名を使用して Unity Catalog 外部テーブルを操作し、ボリューム パスを使用して外部ボリュームを操作します。十分な権限を持つユーザーは、完全なクラウド ストレージ パスを使用してデータに直接アクセスすることもできます。
これらのオブジェクトのクラウド URI を介したデータへのアクセスは、外部ロケーション自体の権限をオーバーライドする Unity Catalog 権限によって完全に管理されます。 「 Unity Catalog のパスの重複の制限 」と「 Unity Catalog の特権とセキュリティ保護可能なオブジェクト」を参照してください。
Unity Catalog のデータにアクセスする
Unity Catalog オブジェクトは、オブジェクト識別子、ボリューム パス、またはクラウド URI を介してデータへのアクセスを提供します。これらの値を使用して、ボリュームとテーブルに関連付けられたデータにアクセスできます。
Unity Catalog テーブルには、次のパターンの 3 層識別子を使用してアクセスします。
<catalog_name>.<schema_name>.<table_name>
Unity Catalog のボリューム ファイル パス
ボリュームは、次のパターンでデータファイルにアクセスするためのファイルパスを提供します。
/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>
クラウド URI では、次の例のように、ドライバー、ストレージ コンテナー識別子、ターゲット ファイルへの完全なパスをユーザーに指定する必要があります。
gs://<bucket_name>/<path>
次の表は、Unity Catalog オブジェクトに許可されるアクセス方法を示しています。
オブジェクト | オブジェクト識別子 | ファイルパス | クラウド URI |
---|---|---|---|
外部ロケーション | いいえ | いいえ | はい |
マネージドテーブル | はい | いいえ | いいえ |
外部テーブル | はい | いいえ | はい |
マネージドボリューム | いいえ | はい | いいえ |
外部ボリューム | いいえ | はい | はい |
Unity Catalog ボリュームは、管理コマンド ( CREATE VOLUME
や DROP VOLUME
など) に次のパターンの 3 層オブジェクト識別子を使用します。
<catalog_name>.<schema_name>.<volume_name>
ボリューム内のファイルを実際に操作するには、パスベースのアクセスを使用する必要があります。