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 VOLUMEDROP VOLUME など) に次のパターンの 3 層オブジェクト識別子を使用します。

<catalog_name>.<schema_name>.<volume_name>

ボリューム内のファイルを実際に操作するには、パスベースのアクセスを使用する必要があります。