Wie funktionieren Pfade für Daten, die von Unity Catalog verwaltet werden?
In diesem Artikel werden Einschränkungen zu Pfadüberschneidungen in Unity Catalog erklärt und pfadbasierte Zugriffsmuster für Datendateien in Unity Catalog-Objekten erläutert. Außerdem wird die Verwaltung von Pfaden für Tabellen und Volumes durch Unity Catalog beschrieben.
Hinweis
Volumes werden erst ab Databricks Runtime 13.3 LTS unterstützt. In Databricks Runtime 12.2 LTS und darunter können Vorgänge mit /Volumes
Pfaden erfolgreich sein, sie können jedoch nur Daten in kurzlebige Speicherdatenträger schreiben, die an Computecluster angefügt sind, anstatt Daten wie erwartet auf Unity-Katalogvolumes zu speichern.
Pfade für Unity Catalog-Objekte dürfen sich nicht überschneiden.
Zur Erzwingung von Datengovernance verhindert Unity Catalog, dass sich verwaltete Datenverzeichnisse überschneiden. Unity Catalog erzwingt folgende Regeln:
- Externe Speicherorte dürfen sich nicht mit anderen externen Speicherorten überschneiden.
- Tabellen und Volumes speichern Datendateien an externen Speicherorten oder am Metastore-Stammspeicherort.
- Volumes dürfen sich nicht mit anderen Volumes überschneiden.
- Tabellen dürfen sich nicht mit anderen Tabellen überschneiden.
- Tabellen und Volumes dürfen sich nicht überschneiden.
- Verwaltete Speicherorte dürfen sich nicht überschneiden. Weitere Informationen finden Sie unter Angeben eines verwalteten Speicherorts in Unity Catalog.
- Externe Volumes dürfen sich nicht mit verwalteten Speicherorten überschneiden.
- Externe Tabellen dürfen sich nicht mit verwalteten Speicherorten überschneiden.
Aufgrund dieser Regeln gibt es in Unity Catalog folgende Einschränkungen:
- Sie können keinen externen Standort innerhalb eines anderen externen Speicherorts definieren.
- Sie können kein Volume innerhalb eines anderen Volumes definieren.
- Sie können keine Tabelle innerhalb einer anderen Tabelle definieren.
- Sie können keine Tabelle für Datendateien oder Verzeichnisse innerhalb eines Volumes definieren.
- Sie können kein Volume für ein Verzeichnis innerhalb einer Tabelle definieren.
Hinweis
Sie können jederzeit pfadbasierten Zugriff verwenden, um Datendateien von Volumes (einschließlich Delta Lake) zu schreiben oder zu lesen. Sie können diese Datendateien nicht als Tabellen im Unity Catalog-Metastore registrieren.
Pfade für verwaltete Tabellen und verwaltete Volumes werden vollständig von Unity Catalog verwaltet.
Wenn Sie eine verwaltete Tabelle oder ein verwaltetes Volume erstellen, erstellt Unity Catalog ein neues Verzeichnis am von Unity Catalog konfigurierten Speicherort, der dem enthaltenden Schema zugeordnet ist. Der Name dieses Verzeichnisses wird nach dem Zufallsprinzip generiert, um potenzielle Konflikte mit bereits vorhandenen Verzeichnissen zu vermeiden.
Dieses Verhalten unterscheidet sich von der Erstellung verwalteter Tabellen durch den Hive-Metastore. Databricks empfiehlt, mit verwalteten Unity Catalog-Tabellen immer unter Verwendung von Tabellennamen und mit verwalteten Unity Catalog-Volumes unter Verwendung von Volumepfaden zu interagieren.
Pfade für externe Tabellen und externe Volumes werden von Unity Catalog gesteuert.
Wenn Sie eine externe Tabelle oder ein externes Volume erstellen, geben Sie einen Pfad innerhalb eines externen Speicherorts an, der von Unity Catalog gesteuert wird.
Wichtig
Databricks empfiehlt, niemals ein externes Volume oder eine externe Tabelle im Stammverzeichnis eines externen Speicherorts zu erstellen. Erstellen Sie stattdessen externe Volumes und externe Tabellen in Unterverzeichnissen an einem externen Speicherort. Diese Empfehlungen tragen dazu bei, versehentliche Pfadüberschneidungen zu vermeiden. Weitere Informationen finden Sie unter Pfade für Unity Catalog-Objekte dürfen sich nicht überschneiden.
Der Einfachheit halber empfiehlt Databricks, mit externen Unity Catalog-Tabellen unter Verwendung von Tabellennamen und mit externen Unity Catalog-Volumes unter Verwendung von Volumepfaden zu interagieren.
Alternativ können Benutzer mit ausreichenden Berechtigungen für das entsprechende Unity Catalog-Objekt mithilfe des vollqualifizierten Cloudobjektspeicherpfads auf Daten aus einer externen Tabelle oder einem externen Volume zugreifen.
Wichtig
Unity Catalog verwaltet alle Berechtigungen für den Zugriff mithilfe von Cloud-URIs für Daten, die externen Tabellen oder externen Volumes zugeordnet sind. Diese Berechtigungen setzen alle Berechtigungen außer Kraft, die externen Speicherorten zugeordnet sind. Weitere Informationen finden Sie unter Unity Catalog-Berechtigungen und sicherungsfähige Objekte.
Wie können Sie auf Daten in Unity Catalog zugreifen?
Unity Catalog-Objekte bieten Zugriff auf Daten über Objektbezeichner, Volumepfade oder Cloud-URIs. Sie können diese Werte verwenden, um auf Daten zuzugreifen, die Volumes und Tabellen zugeordnet sind.
Auf Unity Catalog-Tabellen kann mithilfe eines dreiteiligen Bezeichners mit folgendem Muster zugegriffen werden:
<catalog_name>.<schema_name>.<table_name>
Was sind Volumedateipfade in Unity Catalog?
Volumes bieten einen Dateipfad für den Zugriff auf Datendateien mit folgendem Muster:
/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>
Bei Cloud-URIs müssen Benutzer*innen den Treiber, den Speichercontainerbezeichner und den vollständigen Pfad zu den Zieldateien angeben, wie im folgenden Beispiel zu sehen:
abfss://<container_name>@<storage_account>.dfs.core.windows.net/<path>
In der folgenden Tabelle sind die zulässigen Zugriffsmethoden für Unity Catalog-Objekte aufgeführt:
Object | Objektbezeichner | Dateipfad | Cloud-URI |
---|---|---|---|
Externer Speicherort | Nein | nein | ja |
Verwaltete Tabelle | ja | nein | Nein |
Externe Tabelle | ja | Nein | ja |
Verwaltetes Volume | Nein | Ja | Nein |
Externes Volume | Nein | ja | ja |
Hinweis
Unity Catalog-Volumes verwenden dreistufige Objektbezeichner mit folgendem Muster für Verwaltungsbefehle (z. B CREATE VOLUME
und DROP VOLUME
):
<catalog_name>.<schema_name>.<volume_name>
Um tatsächlich mit Dateien in Volumes zu arbeiten, müssen Sie den pfadbasierten Zugriff verwenden.