次の方法で共有


Unity カタログによって管理されるデータに対してパスはどのように機能しますか?

この記事では、Unity カタログでのパスの重複に関する制限事項、Unity カタログ オブジェクト内のデータ ファイルのパスベースのアクセス パターンの詳細、および Unity カタログがテーブルとボリュームのパスを管理する方法について説明します。

ボリュームは、Databricks Runtime 13.3 LTS 以降でのみサポートされています。 Databricks Runtime 12.2 LTS 以降では、 /Volumes パスに対する操作は成功する可能性がありますが、データを書き込むことができるのは、データを想定どおりに Unity カタログ ボリュームに保持するのではなく、コンピューティング クラスターに接続されたエフェメラル ストレージ ディスクのみです。

Unity カタログ オブジェクトのパスを重複させることはできません

Unity Catalog では、データのマネージド ディレクトリが重複しないようにすることで、データ ガバナンスが適用されます。 Unity カタログでは、次の規則が適用されます。

  • 外部の場所は、他の外部の場所と重複することはできません。
  • テーブルとボリュームは、外部の場所またはメタストア ルートの場所にデータ ファイルを格納します。
  • ボリュームは他のボリュームと重複できません。
  • テーブルは他のテーブルと重複できません。
  • テーブルとボリュームは互いに重複させることはできません。
  • マネージド ストレージの場所は、互いに重複することはできません。 「Unity Catalog の管理されたストレージの場所の指定」を参照してください。
  • 外部ボリュームは、マネージド ストレージの場所と重複できません。
  • 外部テーブルは、マネージド ストレージの場所と重複できません。

これらのルールは、Unity カタログに次の制限があることを意味します。

  • 一つの外部の場所の中に別の外部の場所を定義することはできません。
  • 別のボリューム内にボリュームを定義することはできません。
  • 別のテーブル内にテーブルを定義することはできません。
  • ボリューム内のデータ ファイルまたはディレクトリにテーブルを定義することはできません。
  • テーブル内のディレクトリにボリュームを定義することはできません。

パスベースのアクセスを使用して、Delta Lake を含むボリュームからデータ ファイルを書き込んだり読み取ったりすることができます。 これらのデータ ファイルをテーブルとして Unity カタログ メタストアに登録することはできません。

マネージド テーブルとマネージド ボリュームのパスは、Unity カタログによって完全に管理されます

マネージド テーブルまたはマネージド ボリュームを作成すると、Unity カタログは、含まれるスキーマに関連付けられている Unity カタログで構成されたストレージの場所に新しいディレクトリを作成します。 このディレクトリの名前は、既に存在する他のディレクトリとの競合の可能性を回避するためにランダムに生成されます。

この動作は、Hive メタストアがマネージド テーブルを作成する方法とは異なります。 Databricks では、テーブル名を使用して Unity カタログのマネージド テーブルを操作し、ボリューム パスを使用して Unity カタログのマネージド ボリュームを常に操作することをお勧めします。

外部テーブルと外部ボリュームのパスは、Unity カタログによって管理されます

外部テーブルまたは外部ボリュームを作成するときは、Unity カタログによって管理される外部の場所内のパスを指定します。

Von Bedeutung

Databricks では、外部ボリュームや外部テーブルを外部の場所のルートに作成することはお勧めしません。 代わりに、外部の場所内のサブディレクトリに外部ボリュームと外部テーブルを作成します。 これらの推奨事項は、パスが誤って重ならないようにするのに役立ちます。 Unity カタログ オブジェクトのパスが重複できないを参照してください。

使いやすくするために、Databricks では、テーブル名を使用して Unity カタログ外部テーブルを操作し、ボリューム パスを使用して Unity カタログの外部ボリュームを操作することをお勧めします。

または、対応する Unity カタログ オブジェクトに対する十分な権限を持つユーザーは、完全修飾クラウド オブジェクト ストレージ パスを使用して外部テーブルまたは外部ボリュームのデータにアクセスできます。

Von Bedeutung

Unity Catalog は、外部テーブルまたは外部ボリュームに関連付けられているデータに対するクラウド URI を使用してアクセスするためのすべての特権を管理します。 これらの特権は、外部の場所に関連付けられているすべての特権をオーバーライドします。 Unity カタログの権限とセキュリティ保護可能なオブジェクトを参照してください

Unity カタログのデータにアクセスするにはどうすればよいですか?

Unity カタログ オブジェクトは、オブジェクト識別子、ボリューム パス、またはクラウド URI を介してデータへのアクセスを提供します。 これらの値を使用して、ボリュームとテーブルに関連付けられているデータにアクセスできます。

Unity カタログ テーブルには、次のパターンの 3 層識別子を使用してアクセスします。

<catalog_name>.<schema_name>.<table_name>

Unity カタログのボリューム ファイル パスとは

ボリュームは、次のパターンでデータ ファイルにアクセスするためのファイル パスを提供します。

/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>

クラウド URI では、次の例のように、ドライバー、ストレージ コンテナー識別子、およびターゲット ファイルへの完全なパスをユーザーに提供する必要があります。

abfss://<container_name>@<storage_account>.dfs.core.windows.net/<path>

次の表は、Unity カタログ オブジェクトで許可されるアクセス方法を示しています。

オブジェクト オブジェクト識別子 ファイルパス クラウド URI
外部の場所 いいえ いいえ はい
マネージド テーブル はい いいえ いいえ
外部テーブル はい いいえ はい
マネージド ボリューム いいえ はい いいえ
外部ボリューム いいえ はい はい

Unity カタログ ボリュームは、管理コマンド ( CREATE VOLUMEDROP VOLUMEなど) に次のパターンで 3 層オブジェクト識別子を使用します。

<catalog_name>.<schema_name>.<volume_name>

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