Come funzionano i percorsi per i dati gestiti da Unity Catalog?
Questo articolo illustra le restrizioni relative alle sovrapposizioni di percorsi in Unity Catalog, illustra in dettaglio i modelli di accesso basati sul percorso per i file di dati negli oggetti Catalogo unity e descrive come Unity Catalog gestisce i percorsi per tabelle e volumi.
Nota
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.
Unity Catalog applica la governance dei dati impedendo la sovrapposizione delle directory gestite dei dati. Il catalogo unity applica le regole seguenti:
- Le posizioni esterne non possono sovrapporsi ad altre posizioni esterne.
- Le tabelle e i volumi archiviano i file di dati in percorsi esterni o nel percorso radice del metastore.
- I volumi non possono sovrapporsi ad altri volumi.
- Le tabelle non possono sovrapporsi ad altre tabelle.
- Le tabelle e i volumi non possono sovrapporsi tra loro.
- Le posizioni di archiviazione gestite non possono sovrapporsi tra loro. Vedere Specificare un percorso di archiviazione gestito nel catalogo unity.
- I volumi esterni non possono sovrapporsi a percorsi di archiviazione gestiti.
- Le tabelle esterne non possono sovrapporsi a percorsi di archiviazione gestiti.
Queste regole indicano che esistono le restrizioni seguenti nel catalogo unity:
- Non è possibile definire una posizione esterna all'interno di un'altra posizione esterna.
- Non è possibile definire un volume all'interno di un altro volume.
- Non è possibile definire una tabella all'interno di un'altra tabella.
- Non è possibile definire una tabella in qualsiasi file di dati o directory all'interno di un volume.
- Non è possibile definire un volume in una directory all'interno di una tabella.
Nota
È sempre possibile usare l'accesso basato sul percorso per scrivere o leggere i file di dati dai volumi, incluso Delta Lake. Non è possibile registrare questi file di dati come tabelle nel metastore del catalogo Unity.
Quando si crea una tabella gestita o un volume gestito, Unity Catalog crea una nuova directory nel percorso di archiviazione configurato dal catalogo unity associato allo schema contenitore. Il nome di questa directory viene generato in modo casuale per evitare potenziali conflitti con altre directory già presenti.
Questo comportamento è diverso dal modo in cui il metastore Hive crea tabelle gestite. Databricks consiglia di interagire sempre con le tabelle gestite di Unity Catalog usando nomi di tabella e volumi gestiti di Unity Catalog usando i percorsi dei volumi.
Quando si crea una tabella esterna o un volume esterno, si specifica un percorso all'interno di una posizione esterna governata dal catalogo unity.
Importante
Databricks consiglia di non creare mai un volume esterno o una tabella esterna nella radice di una posizione esterna. Creare invece volumi esterni e tabelle esterne in sottodirectory all'interno di un percorso esterno. Questi consigli dovrebbero aiutare a evitare percorsi accidentalmente sovrapposti. Vedere Percorsi per gli oggetti del catalogo Unity che non possono sovrapporsi.
Per semplificare l'uso, Databricks consiglia di interagire con le tabelle esterne di Unity Catalog usando nomi di tabella e volumi esterni di Unity Catalog usando i percorsi dei volumi.
In alternativa, gli utenti con privilegi sufficienti per l'oggetto Catalogo Unity corrispondente possono accedere ai dati da una tabella esterna o da un volume esterno usando il percorso di archiviazione completo degli oggetti cloud.
Importante
Unity Catalog gestisce tutti i privilegi per l'accesso usando gli URI cloud ai dati associati a tabelle esterne o volumi esterni. Questi privilegi eseguono l'override di tutti i privilegi associati a posizioni esterne. Vedere Privilegi del catalogo Unity e oggetti a protezione diretta
Gli oggetti Catalogo unity forniscono l'accesso ai dati tramite identificatori di oggetto, percorsi del volume o URI cloud. È possibile usare questi valori per accedere ai dati associati a volumi e tabelle.
È possibile accedere alle tabelle del catalogo unity usando un identificatore a tre livelli con il modello seguente:
<catalog_name>.<schema_name>.<table_name>
I volumi forniscono un percorso di file per accedere ai file di dati con il modello seguente:
/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>
Gli URI cloud richiedono agli utenti di fornire il driver, l'identificatore del contenitore di archiviazione e il percorso completo dei file di destinazione, come nell'esempio seguente:
abfss://<container_name>@<storage_account>.dfs.core.windows.net/<path>
La tabella seguente illustra i metodi di accesso consentiti per gli oggetti catalogo unity:
Object | Identificatori di oggetto | Percorso file | Cloud URI |
---|---|---|---|
Posizione esterna | no | no | yes |
Tabella gestita | yes | no | no |
Tabella esterna | yes | no | yes |
Volume gestito | no | yes | no |
Volume esterno | no | yes | yes |
Nota
I volumi di Catalogo Unity usano identificatori di oggetto a tre livelli con il modello seguente per i comandi di gestione (ad esempio CREATE VOLUME
e DROP VOLUME
):
<catalog_name>.<schema_name>.<volume_name>
Per lavorare effettivamente con i file nei volumi, è necessario usare l'accesso basato sul percorso.