Unity Catalog によって管理されるデータのパスはどのように機能しますか?
この記事では、 Unity Catalogでのパスの重複に関する制限について説明し、Unity Catalog オブジェクト内のデータファイルのパスベースのアクセスパターンの詳細、 Unity Catalogによるテーブルとボリュームのパスの管理方法について説明します。
ボリュームは、Databricks Runtime 13.3 LTS 以降でのみサポートされます。 Databricks Runtime 12.2 LTS 以前では、/Volumes
パスに対する操作は成功する可能性がありますが、コンピュート クラスターにアタッチされたエフェメラル ストレージ ディスクにのみデータを書き込むことができます。これは、期待どおりにデータを Unity Catalog ボリュームに永続化するのではなく、コンピュート クラスターにアタッチされています。
Unity Catalog オブジェクトのパスは重複できません
Unity Catalog は、データの管理ディレクトリが重複するのを防ぐことで、データガバナンスを強化します。 Unity Catalog では、次のルールが適用されます。
- 外部ロケーションのパスを他の外部ロケーションと重複させることはできません。
- テーブルとボリュームは、外部ロケーションまたはメタストアのルートロケーションにデータ ファイルを格納します。
- ボリュームのパスを他のボリュームと重複させることはできません。
- テーブルのパスを他のテーブルと重複させることはできません。
- テーブルのパスとボリュームのパスを重複させることはできません。
- 管理されたストレージの場所を互いに重ねることはできません。「Unity Catalog で管理されたストレージの場所を指定する」を参照してください。
- 外部ボリュームは、マネージドストレージの場所と重複することはできません。
- 外部テーブルは、マネージドストレージロケーションと重複することはできません。
これらのルールは、Unity Catalog に次の制限が存在することを意味します。
- 外部ロケーションを別の外部ロケーション内に定義することはできません。
- 別のボリューム内にボリュームを定義することはできません。
- テーブルを別のテーブル内に定義することはできません。
- ボリューム内のデータ・ファイルまたはディレクトリーにテーブルを定義することはできません。
- テーブル内のディレクトリにボリュームを定義することはできません。
パスベースのアクセスを使用して、Delta Lake などのボリュームからデータ ファイルを書き込んだり読み取ったりすることができます。これらのデータ ファイルをテーブルとして Unity Catalog メタストアに登録することはできません。
マネージドテーブルとマネージドボリュームのパスは、Unity Catalogによって完全に管理されます
マネージドテーブルまたはマネージドボリュームを作成すると、 Unity Catalog は、それらを格納するスキーマに関連付けられた Unity Catalogによって構成済みのストレージ・ロケーションに新しいディレクトリーを作成します。 このディレクトリの名前は、すでに存在する他のディレクトリとの潜在的な衝突を回避するためにランダムに生成されます。
この動作は、 Hive metastore がマネージ テーブルを作成する方法とは異なります。 Databricks では、常にテーブル名を使用して Unity Catalog マネージド テーブルを操作し、ボリューム パスを使用して Unity Catalog マネージド ボリュームを操作することをお勧めします。
外部テーブルと外部ボリュームのパスは、Unity Catalog によって管理されます
外部テーブルまたは外部ボリュームを作成するときは、 Unity Catalogによって制御される外部ロケーション内のパスを指定します。
Databricks 外部ロケーションのルートに外部ボリュームまたは外部テーブルを作成しないことをお勧めします。 代わりに、外部ボリュームと外部テーブルを外部ロケーション内のサブディレクトリに作成します。これらの推奨事項は、パスが誤って重ならないようにするのに役立ちます。「パス」を参照してください Unity Catalog オブジェクトはオーバーラップできません。
使いやすくするために、Databricks では、テーブル名を使用して Unity Catalog外部テーブルを操作し、ボリューム パスを使用してUnity Catalog外部ボリュームを操作することをお勧めします。
または、対応する Unity Catalog オブジェクトに対する十分な権限を持つユーザーは、完全修飾されたクラウド オブジェクト ストレージ パスを使用して、外部テーブルまたは外部ボリュームからデータにアクセスできます。
Unity Catalog は、外部テーブルまたは外部ボリュームに関連付けられたデータへのクラウド URI を使用したアクセスに対するすべての特権を管理します。これらの権限は、外部ロケーションに関連付けられた権限よりも優先されます。 「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 では、次の例のように、ドライバー、ストレージ コンテナー識別子、ターゲット ファイルへの完全なパスをユーザーに指定する必要があります。
s3://<bucket_name>/<path>
次の表は、Unity Catalog オブジェクトに許可されるアクセス方法を示しています。
オブジェクト | オブジェクト識別子 | ファイルパス | クラウド URI |
---|---|---|---|
外部ロケーション | いいえ | いいえ | はい |
マネージドテーブル | はい | いいえ | いいえ |
外部テーブル | はい | いいえ | はい |
マネージドボリューム | いいえ | はい | いいえ |
外部ボリューム | いいえ | はい | はい |
Unity Catalog ボリュームは、管理コマンド ( CREATE VOLUME
や DROP VOLUME
など) に次のパターンの 3 層オブジェクト識別子を使用します。
<catalog_name>.<schema_name>.<volume_name>
ボリューム内のファイルを実際に操作するには、パスベースのアクセスを使用する必要があります。