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 tabellaire gegevens beheren, bepalen volumes niet-tabellaire gegevens van elke indeling, inclusief gestructureerde, semi-gestructureerde of ongestructureerde gegevens.

Databricks raadt het gebruik van volumes aan om de toegang tot alle niet-tabellaire gegevens te beheren. Volumes zijn beschikbaar in twee typen:

  • Beheerde volumes: Voor eenvoudige door Databricks beheerde opslag.
  • Externe volumes: Voor het toevoegen van governance aan bestaande opslaglocaties voor cloudobjecten.

Gebruiksvoorbeelden voor volumes

Gebruiksvoorbeelden voor volumes zijn onder andere:

  • Registreer landingsgebieden voor onbewerkte gegevens die door externe systemen worden geproduceerd om de verwerking ervan in de vroege fasen van ETL-pijplijnen en andere data engineering-activiteiten te ondersteunen.
  • Faseringslocaties registreren voor opname. U kunt bijvoorbeeld autolaadprogramma's COPY INTOof CTAS-instructies (CREATE TABLE AS) gebruiken.
  • Geef bestandsopslaglocaties op voor gegevenswetenschappers, gegevensanalisten en machine learning-engineers die ze kunnen gebruiken als onderdelen van hun verkennende gegevensanalyse en andere gegevenswetenschapstaken.
  • Geef Azure Databricks-gebruikers toegang tot willekeurige bestanden die door andere systemen in de cloud worden geproduceerd en opgeslagen. Grote verzamelingen ongestructureerde gegevens (zoals afbeeldingen, audio-, video- en PDF-bestanden) die zijn vastgelegd door bewakingssystemen of IoT-apparaten, of bibliotheekbestanden (JAR's en Python-wielbestanden) die zijn geëxporteerd uit lokale afhankelijkheidsbeheersystemen of CI/CD-pijplijnen.
  • Sla operationele gegevens op, zoals logboekregistratie- of controlepuntenbestanden.

Zie Voor een demo van het werken met volumes het bestand, de installatiekopie en het ophalen van gegevens vereenvoudigen met Unity Catalog-volumes.

Important

U kunt geen bestanden in volumes registreren als tabellen in Unity Catalog. Volumes zijn alleen bedoeld voor padgebaseerde gegevenstoegang. Gebruik tabellen als u wilt werken met tabelgegevens in Unity Catalog.

Beheerd versus externe volumes

Beheerde en externe volumes bieden bijna identieke ervaringen bij het gebruik van Azure Databricks-hulpprogramma's, API's en API's. De belangrijkste verschillen hebben betrekking op opslaglocatie, levenscyclus en beheer:

Eigenschap Beheerde volumes Externe volumes
Opslaglocatie Gemaakt in de door UC beheerde opslag voor het schema Geregistreerd op basis van een bestaand opslagpad voor cloudobjecten
Levenscyclus van gegevens UC beheert de lay-out en verwijdering (retentie van 7 dagen bij verwijderen) Gegevens blijven in de cloudopslag wanneer u het volume neerzet
Toegangsbeheer Alle toegang gaat via UC UC bepaalt de toegang, maar externe hulpprogramma's kunnen directe URI's gebruiken
Migratie nodig? Nee. Nee: gebruik bestaande opslagpaden as-is
Typische use-case Eenvoudigste optie voor Databricks-workloads Gemengde toegang tot Databricks en externe systemen

Waarom beheerde volumes gebruiken?

Beheerde volumes hebben de volgende voordelen:

  • Standaardkeuze voor Databricks-workloads.
  • U hoeft cloudreferenties of opslagpaden niet handmatig te beheren.
  • Eenvoudigste optie voor het snel maken van beheerde opslaglocaties.

Waarom externe volumes gebruiken?

Met externe volumes kunt u Unity Catalog-gegevensbeheer toevoegen aan bestaande mappen voor cloudobjectopslag. Enkele gebruiksvoorbeelden voor externe volumes zijn onder andere:

  • Governance toevoegen waar gegevens zich al bevinden, zonder dat er gegevens hoeven te worden gekopieerd.
  • 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.

Databricks raadt aan externe volumes te gebruiken om niet-tabellaire gegevensbestanden op te slaan die naast Azure Databricks worden gelezen of geschreven door externe systemen. Unity Catalog regelt geen lees- en schrijfbewerkingen die rechtstreeks worden uitgevoerd op de opslag van cloudobjecten van externe systemen, dus u moet aanvullende beleidsregels en referenties configureren in uw cloudaccount, zodat het beleid voor gegevensbeheer buiten Azure Databricks wordt gerespecteerd.

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

Het /<catalog>/<schema>/<volume> gedeelte van het pad wordt toegewezen aan de drie Unity Catalog-objectnamen voor het bestand. Deze mappen zijn alleen-lezen en worden automatisch beheerd door Unity Catalog. U kunt ze niet maken of verwijderen met bestandssysteemopdrachten.

Note

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

Note

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.

Important

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

Rekenvereisten

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.

Limitations

U moet Unity Catalog-compatibele compute gebruiken om te werken met Unity Catalog-volumes.

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

Databricks Runtime-versie Limitations
Alle ondersteunde Databricks Runtime-versies
  • Volumes bieden geen ondersteuning voor dbutils.fs opdrachten die worden gedistribueerd naar uitvoerders.
  • UDF's van Unity Catalog bieden geen ondersteuning voor het openen van volumebestandspaden.
  • U hebt geen toegang tot volumes vanuit RDD's.
  • U kunt de verouderde spark-submit-taak niet gebruiken met JAR's die zijn opgeslagen in een volume. Gebruik in plaats daarvan de JAR-taak. Zie de JAR-taak voor banen.
  • 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")
  • %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 new Path("dbfs:/Volumes/main/default/test-volume/file.txt") bijvoorbeeld een org.apache.hadoop.fs.path object wilt maken, werkt dit niet.
  • Volumes zijn niet beschikbaar in Azure Government-regio's of werkruimten met FedRAMP-naleving.
  • U moet het padenformaat met een dbfs:/-schema gebruiken in het configuratievenster van de Azure Data Factory-bibliotheek, bijvoorbeeld als dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.
14.3 LTS en hoger
  • Bij berekening met toegewezen toegangsmodus (voorheen modus voor toegang tot éé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 standaardtoegangsmodus (voorheen 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.
  • Op berekeningen die zijn geconfigureerd met de toegewezen toegangsmodus, 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 toegewezen toegangsmodus.

Volgende stappen

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