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 beheerd of extern zijn.
Belangrijk
U kunt volumes niet gebruiken als locatie voor tabellen. Volumes zijn alleen bedoeld voor padgebaseerde gegevenstoegang. Gebruik tabellen als u wilt werken met tabelgegevens in Unity Catalog.
De volgende artikelen bevatten meer informatie over het werken met volumes:
- Maak en beheer volumes.
- Beheer bestanden in volumes.
- Verken opslag en zoek gegevensbestanden.
- beheerde versus externe volumes.
- Wat zijn de bevoegdheden voor 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 unity-catalogus beheerd 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 bij 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
):
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
, , /volume
of 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 lager kunnen bewerkingen die gebruikmaken van /Volumes
-paden slagen, maar ze kunnen gegevens alleen naar tijdelijke opslagschijven schrijven die zijn gekoppeld aan rekenclusters, in plaats van de gegevens zoals verwacht op te slaan in Unity Catalog-volumes.
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-compatibele compute gebruiken om te werken met Unity Catalog-volumes. Volumes bieden geen ondersteuning voor alle workloads.
In de volgende tabel worden volumebeperkingen van Unity Catalog beschreven op basis van de versie van Databricks Runtime:
Databricks Runtime-versie | Beperkingen |
---|---|
14.3 LTS en hoger | - Op clusters met één gebruiker hebt u geen toegang tot volumes vanuit threads en subprocessen in Scala. |
14.2 en daaronder | - Op rekenproces dat is 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.- UDF's voor Unity Catalog bieden geen ondersteuning voor toegang tot bestandspaden voor volumes. - 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, 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 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. 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 en 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 . |