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>

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