Montaggio dell'archiviazione di oggetti cloud in Azure Databricks

Azure Databricks consente agli utenti di montare l'archiviazione di oggetti cloud nel file system di Databricks (DBFS) per semplificare i modelli di accesso ai dati per gli utenti che non hanno familiarità con i concetti del cloud. I dati montati non funzionano con Unity Catalog e Databricks consiglia di eseguire la migrazione da montaggi e gestire invece la governance dei dati con Unity Catalog.

In che modo Azure Databricks monta l'archiviazione di oggetti cloud?

I montaggi di Azure Databricks creano un collegamento tra un'area di lavoro e un archivio oggetti cloud, che consente di interagire con l'archiviazione oggetti cloud usando percorsi di file familiari relativi al file system di Databricks. I montaggi funzionano creando un alias locale nella /mnt directory in cui sono archiviate le informazioni seguenti:

  • Posizione dell'archiviazione di oggetti cloud.
  • Specifiche del driver per connettersi all'account di archiviazione o al contenitore.
  • Credenziali di sicurezza necessarie per accedere ai dati.

Qual è la sintassi per il montaggio dell'archiviazione?

source Specifica l'URI dell'archivio oggetti e può facoltativamente codificare le credenziali di sicurezza. Specifica mount_point il percorso locale nella /mnt directory. Alcune origini di archiviazione oggetti supportano un argomento facoltativo encryption_type . Per alcuni modelli di accesso è possibile passare specifiche di configurazione aggiuntive come dizionario a extra_configs.

Nota

Databricks consiglia di impostare la configurazione di Spark e Hadoop specifica del montaggio come opzioni usando extra_configs. Ciò garantisce che le configurazioni siano associate al montaggio anziché al cluster o alla sessione.

dbutils.fs.mount(
  source: str,
  mount_point: str,
  encryption_type: Optional[str] = "",
  extra_configs: Optional[dict[str:str]] = None
)

Rivolgersi all'area di lavoro e agli amministratori cloud prima di configurare o modificare i montaggi dei dati, in quanto la configurazione non corretta può fornire l'accesso non sicuro a tutti gli utenti dell'area di lavoro.

Nota

Oltre agli approcci descritti in questo articolo, è possibile automatizzare il montaggio di un bucket con il provider Databricks Terraform e databricks_mount.

Smontare un punto di montaggio

Per smontare un punto di montaggio, usare il comando seguente:

dbutils.fs.unmount("/mnt/<mount-name>")

Avviso

Per evitare errori, non modificare mai un punto di montaggio mentre altri processi leggono o scrivono su di esso. Dopo aver modificato un montaggio, eseguire dbutils.fs.refreshMounts() sempre in tutti gli altri cluster in esecuzione per propagare eventuali aggiornamenti di montaggio. Vedere il comando refreshMounts (dbutils.fs.refreshMounts).

Montare ad ADLS Gen2 o Archiviazione BLOB con ABFS

È possibile montare i dati in un account di archiviazione di Azure usando un'entità servizio dell'applicazione Microsoft Entra ID (in precedenza Azure Active Directory) per l'autenticazione. Per altre informazioni, vedere Accedere all'archiviazione con Microsoft Entra ID (in precedenza Azure Active Directory) usando un'entità servizio.

Importante

  • Tutti gli utenti dell'area di lavoro di Azure Databricks hanno accesso all'account ADLS Gen2 montato. All'entità servizio usata per accedere all'account ADLS Gen2 deve essere concesso l'accesso solo all'account ADLS Gen2. non deve essere concesso l'accesso ad altre risorse di Azure.
  • Quando si crea un punto di montaggio tramite un cluster, gli utenti del cluster possono accedere immediatamente al punto di montaggio. Per usare il punto di montaggio in un altro cluster in esecuzione, è necessario eseguire dbutils.fs.refreshMounts() in tale cluster in esecuzione per rendere disponibile per l'uso il punto di montaggio appena creato.
  • Lo smontaggio di un punto di montaggio durante l'esecuzione dei processi può causare errori. Assicurarsi che i processi di produzione non smontino l'archiviazione come parte dell'elaborazione.
  • I punti di montaggio che usano segreti non vengono aggiornati automaticamente. Se l'archiviazione montata si basa su un segreto ruotato, scade o viene eliminato, possono verificarsi errori, ad esempio 401 Unauthorized. Per risolvere un errore di questo tipo, è necessario smontare e rimontare lo spazio di archiviazione.
  • Lo spazio dei nomi gerarchico (HNS) deve essere abilitato per montare correttamente un account di archiviazione di Azure Data Lake Archiviazione Gen2 usando l'endpoint ABFS.

Eseguire quanto segue nel notebook per autenticare e creare un punto di montaggio.

configs = {"fs.azure.account.auth.type": "OAuth",
          "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
          "fs.azure.account.oauth2.client.id": "<application-id>",
          "fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
          "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<directory-id>/oauth2/token"}

# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mount_point = "/mnt/<mount-name>",
  extra_configs = configs)
val configs = Map(
  "fs.azure.account.auth.type" -> "OAuth",
  "fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
  "fs.azure.account.oauth2.client.id" -> "<application-id>",
  "fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
  "fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com/<directory-id>/oauth2/token")
// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mountPoint = "/mnt/<mount-name>",
  extraConfigs = configs)

Sostituzione

  • <application-id>con l'ID applicazione (client) per l'applicazione Azure Active Directory.
  • <scope-name> con il nome dell'ambito del segreto Databricks.
  • <service-credential-key-name> con il nome della chiave contenente il segreto client.
  • <directory-id>con l'ID directory (tenant) per l'applicazione Azure Active Directory.
  • <container-name> con il nome di un contenitore nell'account di archiviazione DILS Gen2.
  • <storage-account-name> con il nome dell'account di archiviazione DILS Gen2.
  • <mount-name> con il nome del punto di montaggio previsto in DBFS.