Delen via


Wat zijn Unity Catalogvolumes?

Volumes zijn Unity-Catalog-objecten die governance mogelijk maken voor niet-tabellaire gegevenssets. Volumes vertegenwoordigt een logisch opslagvolume in een opslaglocatie voor cloudobjecten. Volumes biedt mogelijkheden voor het openen, opslaan, beheren en ordenen van bestanden.

Hoewel tables governance biedt over gegevenssets in tabelvorm, volumes governance toevoegen aan niet-tabellaire gegevenssets. U kunt volumes gebruiken om bestanden op te slaan en te openen in elke indeling, waaronder gestructureerde, semi-gestructureerde en ongestructureerde gegevens.

Databricks raadt het gebruik van volumes aan om de toegang tot alle niet-tabellaire gegevens te beheren. Net als tableskan volumes worden beheerd of extern zijn.

Belangrijk

U kunt volumes niet gebruiken als locatie voor tables. Volumes zijn alleen bedoeld voor padgebaseerde gegevenstoegang. Gebruik tables wanneer u wilt werken met tabelgegevens in Unity Catalog.

De volgende artikelen bevatten meer informatie over het werken met volumes:

Notitie

Wanneer u met volumeswerkt, moet u een SQL Warehouse of een cluster met Databricks Runtime 13.3 LTS of hoger gebruiken, tenzij u Azure Databricks-UIs zoals Catalog Explorer gebruikt.

Wat is een beheerd volume?

Een beheerd volume is een Unity-Catalog-beheerde opslagvolume dat is gemaakt binnen de beheerde opslaglocatie van de met schema. Zie Een beheerde opslaglocatie opgeven in Unity Catalog.

Beheerde volumes maakt het mogelijk om gereguleerde opslag te creëren voor het werken met bestanden zonder overhead van externe locaties en opslag credentials. U hoeft geen locatie op te geven bij het maken van een beheerd volume en alle bestandstoegang voor gegevens in beheerde volumes verloopt via paden die worden beheerd door Unity Catalog.

Wat is een extern volume?

Een extern volume is een door Unity-Catalogbeheerd opslagvolume dat is geregistreerd in een directory binnen een externe locatie met behulp van door Unity-Catalogbeheerde opslag credentials.

Unity Catalog beheert de levenscyclus en indeling van de bestanden in externe volumesniet. Wanneer u een extern volume neerzet, verwijdert Unity Catalog de onderliggende gegevens niet.

Welk pad wordt gebruikt voor toegang tot bestanden in een volume?

Volumes zitten op het derde niveau van de Unity Catalog naamruimte op drie niveaus (catalog.schema.volume):

Unity Catalog objectmodel-diagram, gericht op volume

Het pad voor toegang tot volumes is hetzelfde, ongeacht of u Apache Spark, SQL, Python of andere talen en bibliotheken gebruikt. Dit verschilt van verouderde toegangspatronen voor bestanden in objectopslag die zijn gebonden aan een Azure Databricks-werkruimte.

Het pad voor toegang tot bestanden in volumes gebruikt de volgende indeling:

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

Azure Databricks ondersteunt ook een optioneel dbfs:/ schema bij het werken met Apache Spark, dus het volgende pad werkt ook:

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

De reeks /<catalog>/<schema>/<volume> in het pad komt overeen met de drie Unity Catalog objectnamen die aan het bestand zijn gekoppeld. Deze padelementen zijn alleen-lezen en kunnen niet rechtstreeks door gebruikers worden geschreven, wat betekent dat het niet mogelijk is om deze mappen te maken of verwijderen met behulp van bestandssysteembewerkingen. Ze worden automatisch beheerd en bewaard in sync met de bijbehorende Unity-Catalog-entiteiten.

Notitie

U kunt ook toegang krijgen tot gegevens in externe volumes met behulp van cloudopslag-URI's.

Gereserveerde paden voor volumes

Volumes introduceert de volgende gereserveerde paden die worden gebruikt voor toegang tot volumes:

  • dbfs:/Volumes
  • /Volumes

Notitie

Paden zijn ook gereserveerd voor mogelijke typefouten voor deze paden van Apache Spark-API's en dbutils, inclusief /volumes/Volume, , /volumeof ze al dan niet worden voorafgegaan door dbfs:/. Het pad /dbfs/Volumes is ook gereserveerd, maar kan niet worden gebruikt voor toegang tot volumes.

Volumes worden alleen ondersteund in Databricks Runtime 13.3 LTS en hoger. In Databricks Runtime 12.2 LTS en hieronder kunnen bewerkingen op basis van /Volumes paden slagen, maar ze kunnen alleen gegevens schrijven naar tijdelijke opslagschijven die zijn gekoppeld aan rekenclusters in plaats van gegevens te behouden naar Unity Catalogvolumes zoals verwacht.

Belangrijk

Als u al bestaande gegevens hebt opgeslagen in een gereserveerd pad in de DBFS-hoofdmap, kunt u een ondersteuningsticket indienen om tijdelijke toegang te krijgen tot deze gegevens om deze naar een andere locatie te verplaatsen.

Beperkingen

U moet Unity Catalog-enabled compute gebruiken om te communiceren met Unity Catalogvolumes. Volumes geen ondersteuning bieden voor alle workloads.

In de volgende table worden de volumebeperkingen van Unity Catalog beschreven op basis van de versie van Databricks Runtime:

Databricks Runtime-versie Beperkingen
14.3 LTS en hoger - In clusters met één gebruiker hebt u geen toegang tot volumes vanuit threads en subprocessen in Scala.
14.2 en daaronder - Op berekeningen die zijn geconfigureerd met de modus voor gedeelde toegang, kunt u geen UDF's gebruiken voor toegang tot volumes.
- Zowel Python als Scala hebben toegang tot FUSE vanuit het stuurprogramma, maar niet van uitvoerders.
- Scala-code die I/O-bewerkingen uitvoert, kan worden uitgevoerd op het stuurprogramma, maar niet op de uitvoerders.
- Voor berekeningen die zijn geconfigureerd met de modus voor toegang van één gebruiker, is er geen ondersteuning voor FUSE in Scala, Scala IO-code voor toegang tot gegevens met behulp van volumepaden of Scala UDF's. Python UDF's worden ondersteund in de modus voor toegang van één gebruiker.
Alle ondersteunde Databricks Runtime-versies - Volumes bieden geen ondersteuning voor dbutils.fs opdrachten die worden gedistribueerd naar uitvoerders.
- Unity Catalog UDF's bieden geen ondersteuning voor toegang tot volumebestandspaden.
- U hebt geen toegang tot volumes via RDD's.
- U kunt spark-submit niet gebruiken met JAR's die zijn opgeslagen in een volume.
- U kunt geen afhankelijkheden definiëren voor andere bibliotheken die toegankelijk zijn via volumepaden in een wiel- of JAR-bestand.
- U kunt geen list Unity-Catalog-objecten gebruiken met behulp van de /Volumes/<catalog-name>- of /Volumes/<catalog-name>/<schema-name>-patronen. U moet een volledig gekwalificeerd pad gebruiken dat een volumenaam bevat, in de vorm Volumes/<catalog-name>/<schema-name>/<volume-name>. Bijvoorbeeld dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
- Het DBFS-eindpunt voor de REST API biedt geen ondersteuning voor volumes paden.
- U kunt volumes niet opgeven als de bestemming voor het leveren van clusterlogboeken.
- %sh mv wordt niet ondersteund voor het verplaatsen van bestanden tussen volumes. Gebruik dbutils.fs.mv of %sh cp in plaats daarvan.
- U kunt geen aangepast Hadoop-bestandssysteem maken met volumes. Als u bijvoorbeeld new Path("dbfs:/Volumes/main/default/test-volume/file.txt") gebruikt om een org.apache.hadoop.fs.path-object te maken, werkt dit niet.
- Volumes zijn niet beschikbaar in Azure Government-regio's of werkruimten met FedRAMP-naleving.
- U moet de padindeling gebruiken met een dbfs:/ schema in het configuratievenster van de Azure Data Factory-bibliotheek, bijvoorbeeld dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.