Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
DBFS-Mounts sind ein veraltetes Muster und werden von Databricks nicht mehr empfohlen. Neue Konten werden ohne Zugriff auf diese Features bereitgestellt. Databricks empfiehlt stattdessen die Verwendung externer Speicherorte des Unity-Katalogs.
Azure Databricks ermöglicht Benutzern das Einbinden von Cloud-Objektspeicher in das Databricks File System (DBFS), um Datenzugriffsmuster für Benutzer zu vereinfachen, die mit Cloud-Konzepten nicht vertraut sind. Eingebundene Daten funktionieren nicht mit Unity Catalog, und Databricks empfiehlt, von der Verwendung von Einbindungen weg zu migrieren und stattdessen Data Governance mit Unity Catalog zu verwalten.
Wie stellt Azure Databricks den Cloudobjektspeicher bereit?
Mounts von Azure Databricks schaffen eine Verbindung zwischen einem Arbeitsbereich und einem Cloud-Objektspeicher, die Ihnen ermöglicht, mit dem Cloud-Objektspeicher unter Verwendung vertrauter Dateipfade relativ zum Databricks-Dateisystem zu arbeiten. Einbinden funktioniert durch Erstellen eines lokalen Alias unter dem /mnt-Verzeichnis, das die folgenden Informationen speichert:
- Speicherort des Cloudobjektspeichers.
- Treiberspezifikationen zum Herstellen einer Verbindung mit dem Speicherkonto oder -container.
- Sicherheitsanmeldeinformationen, die für den Zugriff auf die Daten erforderlich sind.
Was ist die Syntax zum Einbinden von Speicher?
source gibt den URI des Objektspeichers an (und kann optional Sicherheitsanmeldeinformationen codieren).
mount_point gibt den lokalen Pfad im Verzeichnis /mnt an. Einige Objektspeicherquellen unterstützen das optionale Argument encryption_type. Für einige Zugriffsmuster können Sie an extra_configs zusätzliche Konfigurationsspezifikationen als Wörterbuch übergeben.
Hinweis
Databricks empfiehlt, die für die Einbindung spezifische Spark- und Hadoop-Konfiguration als Optionen mit extra_configs festzulegen. Dadurch wird sichergestellt, dass die Konfigurationen an die Einbindung und nicht an den Cluster oder die Sitzung gebunden sind.
dbutils.fs.mount(
source: str,
mount_point: str,
encryption_type: Optional[str] = "",
extra_configs: Optional[dict[str:str]] = None
)
Wenden Sie sich an Ihren Arbeitsbereichs- und Cloud-Administrator, bevor Sie Dateneinbindungen konfigurieren oder ändern, da eine unsachgemäße Konfiguration allen Benutzern in Ihrem Arbeitsbereich ungesicherten Zugriff gewähren kann.
Hinweis
Zusätzlich zu den in diesem Artikel beschriebenen Ansätzen können Sie das Einbinden eines Buckets mit dem Databricks Terraform-Anbieter und databricks_mount automatisieren.
Aushängen eines Bereitstellungspunkts
Verwenden Sie den folgenden Befehl, um die Bereitstellung eines Bereitstellungspunkts aufzuheben:
dbutils.fs.unmount("/mnt/<mount-name>")
Warnung
Um Fehler zu vermeiden, ändern Sie niemals einen Bereitstellungspunkt, während andere Aufträge darin lesen oder schreiben. Nachdem Sie eine Einbindung geändert haben, führen Sie immer dbutils.fs.refreshMounts() auf allen anderen ausgeführten Clustern aus, um alle Einbindungsaktualisierungen zu propagieren. Siehe refreshMounts-Befehl (dbutils.fs.refreshMounts).
Einbinden von ADLS oder Blob Storage mit ABFS
Sie können Daten in einem Azure-Speicherkonto einbinden, indem Sie einen Dienstprinzipal einer Microsoft Entra ID-Anwendung für die Authentifizierung verwenden. Weitere Informationen finden Sie unter Zugriff auf Speicher mit einem Dienstprinzipal und Microsoft Entra ID (früher Azure Active Directory).
Wichtig
- Alle Benutzer im Azure Databricks-Arbeitsbereich haben Zugriff auf das bereitgestellte ADLS-Konto. Dem Dienstprinzipal, den Sie für den Zugriff auf das ADLS-Konto verwenden, sollte nur Zugriff auf dieses ADLS-Konto gewährt werden; es sollte keinen Zugriff auf andere Azure-Ressourcen gewährt werden.
- Wenn Sie einen Bereitstellungspunkt über einen Cluster erstellen, können Benutzer des Clusters sofort auf den Bereitstellungspunkt zugreifen. Um den Bereitstellungspunkt in einem anderen ausgeführten Cluster zu verwenden, müssen Sie
dbutils.fs.refreshMounts()auf diesem ausgeführten Cluster ausführen, um den neu erstellten Bereitstellungspunkt verfügbar zu machen. - Das Unmounten eines Mount-Punkts während der Ausführung von Aufträgen kann zu Fehlern führen. Stellen Sie sicher, dass die Bereitstellung von Speicher nicht im Rahmen der Verarbeitung von Produktionsaufträgen aufgehoben wird.
- Bereitstellungspunkte, die Geheimnisse verwenden, werden nicht automatisch erneuert. Wenn der eingebundene Speicher auf einem Geheimnis basiert, das rotiert, abläuft oder gelöscht wird, können Fehler wie z. B.
401 Unauthorizedauftreten. Um einen solchen Fehler zu beheben, müssen Sie die Einbindung des Speichers aufheben und den Speicher erneut einbinden. - Der hierarchische Namespace (HNS) muss zum erfolgreichen Bereitstellen eines Azure Data Lake Storage-Speicherkontos mithilfe des ABFS-Endpunkts aktiviert sein.
Führen Sie folgende Schritte in Ihrem Notebook aus, um sich zu authentifizieren und einen Bereitstellungspunkt zu erstellen.
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)
Ersetzen
-
<application-id>durch die (Client-)Anwendungs-ID für die Azure Active Directory-Anwendung. -
<scope-name>durch den Namen des Databricks-Geheimnisbereichs. -
<service-credential-key-name>mit dem Namen des Schlüssels, der das Client-Geheimnis enthält. -
<directory-id>mit der Mandanten-ID (Verzeichnis) für die Azure Active Directory-Anwendung. -
<container-name>mit dem Namen eines Containers im ADLS-Speicherkonto. -
<storage-account-name>durch den Namen des ADLS-Speicherkontos. -
<mount-name>durch den Namen des vorgesehenen Einbindungspunkts in DBFS.