Delen via


Wat zijn Unity Catalog-volumes?

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

Hoewel tabellen governance bieden voor gegevenssets in tabelvorm, voegen volumes governance toe boven 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 tabellen kunnen volumes worden beheerd of extern.

Belangrijk

U kunt volumes niet gebruiken als locatie voor tabellen. Volumes zijn alleen bedoeld voor gegevenstoegang op basis van pad. Gebruik tabellen als u wilt werken met tabelgegevens in Unity Catalog.

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

Notitie

Wanneer u met volumes werkt, 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 door de Unity Catalog beheerde opslagvolume dat is gemaakt binnen de beheerde opslaglocatie van het schema dat het bevat. Zie Een beheerde opslaglocatie opgeven in Unity Catalog.

Beheerde volumes maken het mogelijk om beheerde opslag te maken voor het werken met bestanden zonder overhead van externe locaties en opslagreferenties. 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 de Unity Catalog beheerde opslagvolume dat is geregistreerd voor een map op een externe locatie met behulp van opslagreferenties die door Unity Catalog worden beheerd.

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

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

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

Objectmodeldiagram van Unity Catalog, gericht op volume

Het pad naar 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 naar 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-catalogusobjectnamen 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 gesynchroniseerd 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 /Volumes basis van paden slagen, maar kunnen gegevens worden geschreven naar tijdelijke opslagschijven die zijn gekoppeld aan rekenclusters in plaats van gegevens te behouden naar Unity Catalog-volumes 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 compute met Unity Catalog gebruiken om te communiceren met Unity Catalog-volumes. Volumes bieden geen ondersteuning voor alle workloads.

Notitie

Volumes bieden geen ondersteuning voor dbutils.fs opdrachten die worden gedistribueerd naar uitvoerders.

De volgende beperkingen zijn van toepassing:

In Databricks Runtime 14.3 LTS en hoger:

  • In clusters met één gebruiker hebt u geen toegang tot volumes vanuit threads en subprocessen in Scala.

In Databricks Runtime 14.2 en hieronder:

  • 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.
  • Bij berekening die is 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.

Op alle ondersteunde Versies van Databricks Runtime:

  • UDF's van Unity Catalog bieden geen ondersteuning voor het openen van volumebestandspaden.

  • U hebt geen toegang tot volumes vanuit 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 Unity Catalog-objecten weergeven 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.

  • Het DBFS-eindpunt voor de REST API biedt geen ondersteuning voor volumespaden.

  • U kunt geen volumes opgeven als de bestemming voor de levering 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 met volumes maken, wat betekent dat het volgende niet wordt ondersteund:

    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 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.