Condividi tramite


Che cosa sono i volumi del catalogo Unity?

I volumi sono oggetti del catalogo Unity che consentono la governance su set di dati non tabulari. I volumi rappresentano un volume logico di archiviazione in un percorso di archiviazione di oggetti cloud. I volumi offrono funzionalità per l'accesso, l'archiviazione, la governance e l'organizzazione dei file.

Mentre le tabelle forniscono la governance sui set di dati tabulari, i volumi aggiungono governance su set di dati non tabulari. È possibile usare volumi per archiviare e accedere ai file in qualsiasi formato, inclusi dati strutturati, semistrutturati e non strutturati.

Databricks consiglia di usare volumi per gestire l'accesso a tutti i dati non tabulari. Come le tabelle, i volumi possono essere gestiti o esterni.

Importante

Non è possibile usare i volumi come percorso per le tabelle. I volumi sono destinati solo all'accesso ai dati basato sul percorso. Usare le tabelle quando si vogliono usare dati tabulari in Unity Catalog.

Gli articoli seguenti forniscono altre informazioni sull'uso dei volumi:

Nota

Quando si usano volumi, è necessario usare un'istanza di SQL Warehouse o un cluster che esegue Databricks Runtime 13.3 LTS o versione successiva, a meno che non si usino interfacce utente di Azure Databricks, ad esempio Esplora cataloghi.

Che cos'è un volume gestito?

Un volume gestito è un volume di archiviazione regolamentato dal catalogo unity creato all'interno del percorso di archiviazione gestito dello schema contenitore. Vedere Specificare un percorso di archiviazione gestito nel catalogo unity.

I volumi gestiti consentono la creazione di risorse di archiviazione regolamentate per lavorare con i file senza sovraccarico di percorsi esterni e credenziali di archiviazione. Non è necessario specificare un percorso durante la creazione di un volume gestito e l'accesso ai file per i dati nei volumi gestiti avvierà tramite percorsi gestiti da Unity Catalog.

Che cos'è un volume esterno?

Un volume esterno è un volume di archiviazione regolamentato dal catalogo Unity registrato in una directory all'interno di una posizione esterna usando le credenziali di archiviazione regolamentate dal catalogo unity.

Il catalogo unity non gestisce il ciclo di vita e il layout dei file nei volumi esterni. Quando si elimina un volume esterno, Unity Catalog non elimina i dati sottostanti.

Quale percorso viene usato per accedere ai file in un volume?

I volumi si trovano al terzo livello dello spazio dei nomi a tre livelli del catalogo Unity (catalog.schema.volume):

Diagramma del modello a oggetti del catalogo Unity, incentrato sul volume

Il percorso per accedere ai volumi è lo stesso sia che si usi Apache Spark, SQL, Python o altri linguaggi e librerie. Questo comportamento differisce dai modelli di accesso legacy per i file nell'archiviazione oggetti associati a un'area di lavoro di Azure Databricks.

Il percorso per accedere ai file nei volumi usa il formato seguente:

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

Azure Databricks supporta anche uno schema facoltativo dbfs:/ quando si usa Apache Spark, quindi funziona anche il percorso seguente:

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

La sequenza /<catalog>/<schema>/<volume> nel percorso corrisponde ai tre nomi di oggetti del catalogo Unity associati al file. Questi elementi di percorso sono di sola lettura e non direttamente scrivibili dagli utenti, ovvero non è possibile creare o eliminare queste directory usando le operazioni del file system. Vengono gestiti e mantenuti automaticamente sincronizzati con le entità del catalogo Unity corrispondenti.

Nota

È anche possibile accedere ai dati in volumi esterni usando gli URI di archiviazione cloud.

Percorsi riservati per i volumi

I volumi introduce i percorsi riservati seguenti usati per l'accesso ai volumi:

  • dbfs:/Volumes
  • /Volumes

Nota

I percorsi sono riservati anche a potenziali errori di digitazioni per questi percorsi dalle API Apache Spark e dbutils, tra cui /volumes, /Volume, /volumeindipendentemente dal fatto che siano preceduti da dbfs:/. Il percorso /dbfs/Volumes è riservato, ma non può essere usato per accedere ai volumi.

I volumi sono supportati solo in Databricks Runtime 13.3 LTS e versioni successive. In Databricks Runtime 12.2 LTS e versioni successive le operazioni sui /Volumes percorsi potrebbero avere esito positivo, ma possono scrivere solo dati in dischi di archiviazione temporanei collegati ai cluster di calcolo anziché rendere persistenti i dati nei volumi di Unity Catalog come previsto.

Importante

Se si dispone di dati preesistenti archiviati in un percorso riservato nella radice DBFS, è possibile inviare un ticket di supporto per ottenere l'accesso temporaneo a questi dati per spostarli in un'altra posizione.

Limiti

È necessario usare il calcolo abilitato per Unity Catalog per interagire con i volumi del catalogo Unity. I volumi non supportano tutti i carichi di lavoro.

La tabella seguente illustra le limitazioni del volume di Unity Catalog in base alla versione di Databricks Runtime:

Versione di Databricks Runtime Limiti
14.3 LTS e versioni successive - Nei cluster a utente singolo non è possibile accedere ai volumi dai thread e dai sottoprocessi in Scala.
14.2 e versioni precedenti - Nel calcolo configurato con la modalità di accesso condiviso non è possibile usare funzioni definite dall'utente per accedere ai volumi.
- Sia Python che Scala hanno accesso a FUSE dal driver, ma non dagli executor.
- Il codice Scala che esegue operazioni di I/O può essere eseguito sul driver, ma non sugli executor.
- Nel calcolo configurato con la modalità di accesso utente singolo, non è disponibile alcun supporto per FUSE in Scala, per il codice I/O Scala che accede ai dati tramite percorsi di volume o per le funzioni definite dall'utente in Scala. Le funzioni definite dall'utente Python sono supportate in modalità accesso utente singolo.
Tutte le versioni supportate di Databricks Runtime - I volumi non supportano i comandi dbutils.fs distribuiti agli executor.
- Le UDF di Unity Catalog non supportano l'accesso ai percorsi dei file volume.
- Non puoi accedere ai volumi dagli RDD.
- Non è possibile usare spark-submit con JAR archiviati in un volume.
- Non è possibile definire le dipendenze ad altre librerie a cui si accede tramite percorsi di volume all'interno di un file wheel o JAR.
- Non è possibile elencare gli oggetti catalogo unity usando i modelli di /Volumes/<catalog-name> o di /Volumes/<catalog-name>/<schema-name>. È necessario utilizzare un percorso completo che includa un nome di volume, nel formato Volumes/<catalog-name>/<schema-name>/<volume-name>. Ad esempio, dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
- L'endpoint DBFS per l'API REST non supporta i percorsi dei volumi.
- Non è possibile specificare volumi come destinazione per il recapito dei log del cluster.
- %sh mv non è supportato per lo spostamento di file tra volumi. In sostituzione utilizzare dbutils.fs.mv o %sh cp.
- Non è possibile creare un file system Hadoop personalizzato con volumi. Ad esempio, l'uso di new Path("dbfs:/Volumes/main/default/test-volume/file.txt") per creare un oggetto org.apache.hadoop.fs.path non funzionerà.
- I volumi non sono disponibili nelle aree di Azure per enti pubblici o nelle aree di lavoro con conformità FedRAMP.
- È necessario utilizzare il formato del percorso con uno schema dbfs:/ nel pannello di configurazione della libreria di Azure Data Factory, ad esempio dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.