Freigeben über


Was sind Unity Catalog-Volumes?

Volumes sind Unity Catalog-Objekte, die Governance über nicht tabellarische Datasets ermöglichen. Volumes stellen ein logisches Speichervolume an einem Cloudobjektspeicherort dar. Volumes bieten Funktionen zum Zugreifen auf Dateien sowie zum Speichern, Verwalten und Organisieren von Dateien.

Tabellen bieten zwar Governance über tabellarische Datasets, Volumes unterstützen jedoch zusätzlich Governance für nicht tabellarische Datasets. Sie können Volumes verwenden, um Dateien in einem beliebigen Format zu speichern und darauf zuzugreifen, einschließlich strukturierter, semistrukturierter und unstrukturierter Daten.

Databricks empfiehlt die Verwendung von Volumes zum Verwalten des Zugriffs auf alle Nicht-Tabellendaten. Ebenso wie Tabellen können Volumes verwaltet oder extern sein.

Wichtig

Sie können Volumes nicht als Speicherort für Tabellen verwenden. Volumes sind nur für den pfadbasierten Datenzugriff vorgesehen. Verwenden Sie Tabellen, wenn Sie im Unity Catalog mit Tabellendaten arbeiten möchten.

Die folgenden Artikel enthalten weitere Informationen zur Arbeit mit Volumes:

Hinweis

Wenn Sie mit Volumes arbeiten, müssen Sie ein SQL-Warehouse oder einen Cluster unter Databricks Runtime 13.3 LTS oder höher verwenden, es sei denn, Sie verwenden Azure Databricks-Benutzeroberflächen wie den Katalog-Explorer.

Was ist ein verwaltetes Volume?

Ein verwaltetes Volume ist ein von Unity Catalog verwaltetes Speichervolume, das am verwalteten Speicherort des enthaltenden Schemas erstellt wird. Weitere Informationen finden Sie unter Angeben eines verwalteten Speicherorts in Unity Catalog.

Verwaltete Volumes ermöglichen die Erstellung von verwaltetem Speicher für die Arbeit mit Dateien ohne den Mehraufwand durch externe Speicherorte und Speicheranmeldeinformationen. Sie müssen beim Erstellen eines verwalteten Volumes keinen Speicherort angeben, und der gesamte Dateizugriff auf Daten in verwalteten Volumes erfolgt über Pfade, die von Unity Catalog verwaltet werden.

Was ist ein externes Volume?

Ein externes Volume ist ein von Unity Catalog verwaltetes Speichervolume, das für ein Verzeichnis innerhalb eines externen Speicherorts mit von Unity Catalog verwalteten Speicheranmeldeinformationen registriert ist.

Unity Catalog verwaltet weder den Lebenszyklus noch das Layout der Dateien auf externen Volumes. Wenn Sie ein externes Volume löschen, löscht Unity Catalog die zugrunde liegenden Daten nicht.

Welcher Pfad wird für den Zugriff auf Dateien auf einem Volume verwendet?

Volumes befinden sich auf der dritten Ebene des Namespace mit drei Ebenen in Unity Catalog (catalog.schema.volume):

Objektmodell-Diagramm von Unity Catalog mit Fokus auf Volumes

Der Pfad für den Zugriff auf Volumes ist identisch, unabhängig davon, ob Sie Apache Spark, SQL, Python oder andere Sprachen und Bibliotheken verwenden. Dies unterscheidet sich von älteren Zugriffsmustern für Dateien im Objektspeicher, der an einen Azure Databricks-Arbeitsbereich gebunden ist.

Der Pfad für den Zugriff auf Dateien in Volumes verwendet das folgende Format:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Azure Databricks unterstützt außerdem ein optionales dbfs:/-Schema bei der Arbeit mit Apache Spark, sodass der folgende Pfad ebenfalls funktioniert:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Die Sequenz /<catalog>/<schema>/<volume> im Pfad entspricht den drei Unity Catalog-Objektnamen, die der Datei zugeordnet sind. Diese Pfadelemente sind schreibgeschützt und können von Benutzer*innen nicht direkt geschrieben werden, was bedeutet, dass es nicht möglich ist, diese Verzeichnisse mithilfe von Dateisystemvorgängen zu erstellen oder zu löschen. Sie werden automatisch verwaltet und mit den entsprechenden Entitäten von Unity Catalog synchronisiert.

Hinweis

Sie können auch auf Daten in externen Volumes zugreifen, indem Sie Cloudspeicher-URIs verwenden.

Reservierte Pfade für Volumes

Volumes führen die folgenden reservierten Pfade ein, die für den Zugriff auf Volumes verwendet werden:

  • dbfs:/Volumes
  • /Volumes

Hinweis

Pfade sind auch für potenzielle Tippfehler für diese Pfade aus Apache Spark-APIs und dbutils, einschließlich /volumes, /Volume, /volume reserviert, unabhängig davon, ob ihnen dbfs:/ vorangestellt ist. Der Pfad /dbfs/Volumes ist ebenfalls reserviert, kann aber nicht für den Zugriff auf Volumes verwendet werden.

Volumes werden erst ab Databricks Runtime 13.3 LTS unterstützt. In Databricks Runtime 12.2 LTS und früheren Versionen können Vorgänge für /Volumes-Pfade zwar erfolgreich sein, aber möglicherweise Daten auf kurzlebige Speicherdatenträger schreiben, die an Computecluster angefügt sind, anstatt Daten wie erwartet auf Unity Catalog-Volumes zu speichern.

Wichtig

Wenn Sie bereits vorhandene Daten in einem reservierten Pfad im DBFS-Stamm gespeichert haben, können Sie ein Supportticket erstellen, um temporären Zugriff auf diese Daten zu erhalten und sie an einen anderen Speicherort zu verschieben.

Begrenzungen

Um mit Unity Catalog-Volumes zu interagieren, müssen Sie Unity Catalog-fähiges Compute verwenden. Volumes unterstützen nicht alle Workloads.

Hinweis

Volumes unterstützen keine dbutils.fs-Befehle, die an Executoren verteilt werden.

Es gelten die folgenden Einschränkungen:

In Databricks Runtime 14.3 LTS und höheren Versionen:

  • Bei Einzelbenutzerbenutzerclustern können Sie nicht von Threads und Unterprozessen in Scala auf Volumes zugreifen.

Databricks Runtime 14.2 und niedriger:

  • Bei Computeressourcen, die mit dem Modus für den gemeinsamen Zugriff konfiguriert sind, können Sie UDFs nicht für den Zugriff auf Volumes verwenden.
    • Sowohl Python als auch Scala haben Zugriff auf FUSE über den Treiber, aber nicht über Executors.
    • Scala-Code, der E/A-Vorgänge ausführt, kann auf dem Treiber ausgeführt werden, aber nicht auf den Executors.
  • Bei Computeressourcen, die mit dem Zugriffsmodus für Einzelbenutzer konfiguriert sind, gibt es keine Unterstützung für FUSE in Scala, Scala-E/A-Code, der auf Daten mithilfe von Volumepfaden zugreift, oder Scala-UDFs. Python-UDFs werden im Zugriffsmodus für Einzelbenutzer unterstützt.

Alle unterstützten Databricks Runtime-Versionen:

  • Unity Catalog UDFs unterstützen nicht den Zugriff auf Volumedateipfade.

  • Sie können nicht über RDDs auf Volumes zugreifen.

  • Sie können spark-submit nicht mit JARs verwenden, die in einem Volume gespeichert sind.

  • Sie können keine Abhängigkeiten für andere Bibliotheken definieren, auf die über Volumepfade innerhalb einer Wheel- oder JAR-Datei zugegriffen wird.

  • Sie können Unity Catalog-Objekte nicht mit dem /Volumes/<catalog-name> oder /Volumes/<catalog-name>/<schema-name>-Muster auflisten. Sie müssen einen vollqualifizierten Pfad verwenden, der einen Volumenamen enthält.

  • Der DBFS-Endpunkt für die REST-API unterstützt keine Volumepfade.

  • Sie können keine Volumes als Ziel für die Clusterprotokollübermittlung angeben.

  • %sh mv wird für das Verschieben von Dateien zwischen Volumes nicht unterstützt. Verwenden Sie stattdessen dbutils.fs.mv oder %sh cp.

  • Sie können kein benutzerdefiniertes Hadoop-Dateisystem mit Volumes erstellen, was bedeutet, dass Folgendes nicht unterstützt wird:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • Volumes sind in Azure Government-Regionen oder Arbeitsbereichen mit FedRAMP-Konformität nicht verfügbar.

  • Sie müssen das Pfadformat mit einem dbfs:/ Schema im Konfigurationsbereich der Azure Data Factory-Bibliothek verwenden. Beispiel: dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.