Condividi tramite


Procedure consigliate per DBFS e il catalogo Unity

Unity Catalog introduce diverse nuove configurazioni e concetti che approcciano la gestione dei dati in modo completamente diverso rispetto a DBFS. Questo articolo descrive diverse best practice relative all'utilizzo di posizioni esterne del Unity Catalog e di DBFS.

Databricks sconsiglia di utilizzare DBFS e l'archiviazione di oggetti cloud montati per la maggior parte dei casi d'uso nelle aree di lavoro di Azure Databricks abilitate per Unity Catalog. Questo articolo descrive alcuni scenari in cui è consigliabile usare l'archiviazione di oggetti cloud montata. Si noti che Databricks non consiglia di usare la radice DBFS in combinazione con Unity Catalog, a meno che non sia necessario eseguire la migrazione di file o dati archiviati in Unity Catalog.

Come viene usato DBFS nelle aree di lavoro abilitate per il catalogo Unity?

Le azioni eseguite sulle tabelle nel hive_metastore usano modelli di accesso ai dati legacy, che possono includere dati e credenziali di archiviazione gestite da DBFS. Le tabelle gestite nel contesto dell'area di lavoro hive_metastore vengono archiviate nella directory radice di DBFS.

Come funziona DBFS in modalità accesso utente singolo?

I cluster configurati con la modalità di accesso utente singolo hanno accesso completo a DBFS, inclusi tutti i file nella radice DBFS e i dati montati.

Come funziona DBFS in modalità di accesso condiviso?

La modalità di accesso condiviso combina la governance dei dati di Unity Catalog con i controlli di accesso alle tabelle (ACL) legacy di Azure Databricks. L'accesso ai dati nel hive_metastore è disponibile solo per gli utenti con autorizzazioni concesse in modo esplicito.

Per interagire con i file direttamente tramite DBFS, è necessario disporre delle autorizzazioni ANY FILE concesse. Poiché ANY FILE consente agli utenti di ignorare gli ACL delle tabelle legacy nel hive_metastore e di accedere a tutti i dati gestiti da DBFS, Databricks consiglia di prestare attenzione quando si concede questo privilegio.

Non usare DBFS con percorsi esterni del catalogo Unity

Il Catalogo Unity protegge l'accesso ai dati in posizioni esterne utilizzando percorsi URI cloud completi per identificare le concessioni nelle directory di archiviazione di oggetti gestiti. I montaggi DBFS usano un modello di accesso ai dati completamente diverso che ignora completamente Unity Catalog. Databricks consiglia di non riutilizzare i volumi di archiviazione di oggetti cloud tra i montaggi DBFS e i volumi esterni UC, incluso quando si condividono dati tra aree di lavoro o account.

Proteggi l'archiviazione gestita dal Unity Catalog

Catalogo Unity che utilizza posizioni di archiviazione gestite per archiviare file di dati per tabelle e volumi gestiti.

Databricks consiglia quanto segue per le posizioni di archiviazione gestite:

  • Usare nuovi account di archiviazione o contenitori.
  • Definire un criterio di identità personalizzato per il Catalogo Unity.
  • Limitare tutti gli accessi a Azure Databricks gestito dal Catalogo Unity.
  • Limitare l'accesso a tutte le politiche di accesso alle identità create per Unity Catalog.

Aggiungere dati esistenti a percorsi esterni

È possibile caricare gli account di archiviazione esistenti nel catalogo Unity usando posizioni esterne. Per una maggiore sicurezza, Databricks consiglia di caricare solo gli account di archiviazione in posizioni esterne dopo aver revocato tutte le altre credenziali di archiviazione e i modelli di accesso.

Non caricare mai un account di archiviazione usato come radice DBFS come posizione esterna nel catalogo Unity.

Le configurazioni del cluster vengono ignorate nell'accesso al file system di Unity Catalog

Il Catalogo Unity non rispetta le configurazioni del cluster per le impostazioni del filesystem. Ciò significa che le impostazioni del file system Hadoop per la configurazione del comportamento personalizzato con l'archiviazione oggetti cloud non funzionano quando si accede ai dati usando Unity Catalog.

Limitazione dell'accesso a più percorsi

Anche se in genere è possibile usare insieme Unity Catalog e DBFS, non è possibile fare riferimento ai percorsi uguali o condivisi con una relazione padre/figlio nella stessa cella del comando o del notebook usando metodi di accesso diversi.

Ad esempio, se una tabella esterna foo viene definita nella hive_metastore alla posizione a/b/c e una posizione esterna viene definita in Unity Catalog su a/b/, il codice seguente genererà un errore.

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

Questo errore non si verifica se questa logica è suddivisa in due celle:

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")