Volumes maken en ermee werken

In dit artikel worden volumes geïntroduceerd. Dit zijn Unity Catalog-objecten die governance mogelijk maken voor niet-tabellaire gegevenssets. Ook wordt beschreven hoe u volumes maakt, beheert en gebruikt.

Zie Bestanden uploaden naar een Unity Catalog-volume en bestandsbeheerbewerkingen voor Unity Catalog-volumes voor meer informatie over het uploaden en beheren van bestanden in 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 zijn Unity Catalog-volumes?

Volumes zijn Unity Catalog-objecten die een logisch opslagvolume in een opslaglocatie voor cloudobjecten vertegenwoordigen. 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.

Belangrijk

U kunt volumes niet gebruiken als locatie voor tabellen. Volumes zijn alleen bedoeld voor gegevenstoegang op basis van pad. Tabellen gebruiken voor het opslaan van tabelgegevens met Unity Catalog.

Wat is een beheerd volume?

Een beheerd volume is een door de Unity Catalog beheerde opslagvolume dat is gemaakt op de standaardopslaglocatie van het met schema. 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. Zie welk pad wordt gebruikt voor toegang tot bestanden in een volume?

Wanneer u een beheerd volume verwijdert, worden de bestanden die in dit volume zijn opgeslagen, ook binnen 30 dagen verwijderd uit uw cloudtenant.

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. Met externe volumes kunt u Unity Catalog-gegevensbeheer toevoegen aan bestaande mappen voor cloudobjectopslag. Enkele gebruiksvoorbeelden voor externe volumes zijn onder andere:

  • Governance toevoegen aan gegevensbestanden zonder migratie.
  • Bestanden beheren die worden geproduceerd door andere systemen die moeten worden opgenomen of geopend door Azure Databricks.
  • Gegevens beheren die worden geproduceerd door Azure Databricks die rechtstreeks vanuit de opslag van cloudobjecten door andere systemen moeten worden geopend.

Externe volumes moeten mappen zijn binnen externe locaties die worden beheerd door opslagreferenties van Unity Catalog. Unity Catalog beheert de levenscyclus of indeling van de bestanden in externe volumes niet. Wanneer u een extern volume neerzet, worden de onderliggende gegevens niet verwijderd in Unity Catalog.

Notitie

Wanneer u een volume definieert, wordt cloud-URI-toegang tot gegevens onder het volumepad beheerd door de machtigingen van het volume.

Welk pad wordt gebruikt voor toegang tot bestanden in een 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 UC-entiteiten.

Notitie

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

Wat zijn de bevoegdheden voor volumes?

Volumes gebruiken hetzelfde basisprivilegiatiemodel als tabellen, maar waarbij de bevoegdheden voor tabellen zich richten op het verlenen van toegang tot het uitvoeren van query's en het bewerken van rijen in een tabel, richten bevoegdheden voor volumes zich op het werken met bestanden. Als zodanig introduceren volumes de volgende bevoegdheden:

Zie Unity Catalog-bevoegdheden en beveiligbare objecten.

Wie kunt u volumebevoegdheden beheren?

U moet eigenaarsbevoegdheden hebben op een volume om volumebevoegdheden te beheren of volumes te verwijderen. Elk object in Unity Catalog kan slechts één principal hebben toegewezen als eigenaar en hoewel het eigendom niet trapsgewijs wordt (de eigenaar van een catalogus wordt dus niet automatisch de eigenaar van alle objecten in die catalogus), zijn de bevoegdheden die zijn gekoppeld aan eigendom van toepassing op alle objecten in een object.

Dit betekent dat voor Unity Catalog-volumes de volgende principals volumebevoegdheden kunnen beheren:

  • De eigenaar van de bovenliggende catalogus.
  • De eigenaar van het bovenliggende schema.
  • De eigenaar van het volume.

Hoewel elk object slechts één eigenaar kan hebben, raadt Databricks aan om het eigendom voor de meeste objecten toe te wijzen aan een groep in plaats van aan een afzonderlijke gebruiker. Het oorspronkelijke eigendom van een object wordt toegewezen aan de gebruiker die dat object maakt. Zie Eigendom van Unity Catalog-objecten beheren.

Een beheerd volume maken

U moet over de volgende machtigingen beschikken om een beheerd volume te maken:

Bron Vereiste machtigingen
Schema USE SCHEMA, CREATE VOLUME
Catalogus USE CATALOG

Sql

Gebruik de volgende syntaxis om een beheerd volume te maken:

CREATE VOLUME <catalog>.<schema>.<volume-name>;

Catalogusverkenner

Een beheerd volume maken in Catalog Explorer:

  1. Klik in uw Azure Databricks-werkruimte op CataloguspictogramCatalogus.
  2. Zoek of blader naar het schema waaraan u het volume wilt toevoegen en selecteer het.
  3. Klik op de knop Volume maken. (U moet voldoende bevoegdheden hebben.)
  4. Voer een naam in voor het volume.
  5. Geef een opmerking op (optioneel).
  6. Klik op Create.

Een extern volume maken

U moet over de volgende machtigingen beschikken om een extern volume te maken:

Bron Vereiste machtigingen
Externe locatie CREATE EXTERNAL VOLUME
Schema USE SCHEMA, CREATE VOLUME
Catalogus USE CATALOG

Sql

Als u een extern volume wilt maken, geeft u een pad op binnen een externe locatie met behulp van de volgende syntaxis:

CREATE EXTERNAL VOLUME <catalog>.<schema>.<external-volume-name>
LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

Catalogusverkenner

Een extern volume maken in Catalog Explorer:

  1. Klik in uw Azure Databricks-werkruimte op CataloguspictogramCatalogus.
  2. Zoek of blader naar het schema waaraan u het volume wilt toevoegen en selecteer het.
  3. Klik op de knop Volume maken. (U moet voldoende bevoegdheden hebben.)
  4. Voer een naam in voor het volume.
  5. Kies een externe locatie waar u het volume wilt maken.
  6. Bewerk het pad om de submap weer te geven waar u het volume wilt maken.
  7. Geef een opmerking op (optioneel).
  8. Klik op Create.

Een volume verwijderen

Alleen gebruikers met eigenaarsbevoegdheden kunnen een volume verwijderen. Zie Wie volumebevoegdheden kunt beheren?.

Gebruik de volgende syntaxis om een volume te verwijderen:

DROP VOLUME IF EXISTS <volume-name>;

Wanneer u een beheerd volume neerzet, verwijdert Azure Databricks de onderliggende gegevens binnen 30 dagen. Wanneer u een extern volume neerzet, verwijdert u het volume uit Unity Catalog, maar blijven de onderliggende gegevens ongewijzigd op de externe locatie.

Bestanden in een volume lezen

U moet over de volgende machtigingen beschikken om de inhoud van een volume weer te geven of toegang te krijgen tot bestanden die zijn opgeslagen op volumes:

Bron Vereiste machtigingen
Volume READ
Schema USE SCHEMA
Catalogus USE CATALOG

U communiceert met de inhoud van volumes met behulp van paden. Zie welk pad wordt gebruikt voor toegang tot bestanden in een volume?

Andere bestandsbeheerbewerkingen op een volume maken, verwijderen en uitvoeren

U moet over de volgende machtigingen beschikken om bestandsbeheerbewerkingen uit te voeren op bestanden die zijn opgeslagen op volumes:

Bron Vereiste machtigingen
Volume READ, WRITE
Schema USE SCHEMA
Catalogus USE CATALOG

U kunt bestandsbeheerbewerkingen uitvoeren op volumes met de volgende hulpprogramma's:

Zie Werken met bestanden in Unity Catalog-volumes voor meer informatie over programmatisch werken met bestanden op volumes.

Voorbeeldnotitieblok: Volumes maken en ermee werken

In het volgende notebook ziet u de basissyntaxis van SQL voor het maken en gebruiken van Unity Catalog-volumes.

Zelfstudie: Notebook voor Unity Catalog-volumes

Notebook downloaden

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

  • Volumes worden uitgesloten van algemene zoekresultaten in de Azure Databricks-werkruimte.

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