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.
Hinweis
In diesem Artikel werden Legacymuster zum Konfigurieren des Zugriffs auf Azure Data Lake Storage beschrieben. Databricks empfiehlt die Verwendung des Unity-Katalogs zum Konfigurieren des Zugriffs auf Azure Data Lake Storage und Volumes für die direkte Interaktion mit Dateien. Siehe Verbinden mit Cloudobjektspeicher mithilfe des Unity-Katalogs.
In diesem Artikel wird erläutert, wie Sie eine Verbindung mit Azure Data Lake Storage und Blob Storage von Azure Databricks herstellen.
Hinweis
- Der Legacy-WASB-Treiber (Windows Azure Storage Blob) ist veraltet. ABFS hat zahlreiche Vorteile gegenüber WASB. Weitere Informationen finden Sie in der Azure-Dokumentation zu ABFS. Eine Dokumentation zum Arbeiten mit dem Legacy-WASB-Treiber finden Sie unter Herstellen einer Verbindung mit Azure Blob Storage mit WASB (Legacy).
Herstellen einer Verbindung mit Azure Data Lake Storage oder Blob Storage mit Azure-Anmeldeinformationen
Die folgenden Anmeldeinformationen können für den Zugriff auf Azure Data Lake Storage oder Blob Storage verwendet werden:
OAuth 2.0 mit einem Microsoft Entra ID-Dienstprinzipal: Databricks empfiehlt die Verwendung von Microsoft Entra ID-Dienstprinzipale, um eine Verbindung mit Azure Data Lake Storage herzustellen. Informationen zum Erstellen eines Microsoft Entra ID-Dienstprinzipals sowie zum Bereitstellen des Zugriffs auf Azure-Speicherkonten für den Dienstprinzipal finden Sie unter Zugriff auf Speicher mit Microsoft Entra ID (früher Azure Active Directory) und einem Dienstprinzipal.
Um einen Microsoft Entra ID-Dienstprinzipal zu erstellen, benötigen Sie die
Application Administrator
-Rolle oder dieApplication.ReadWrite.All
-Berechtigung in Microsoft Entra ID. Um Rollen in einem Speicherkonto zuweisen zu können, müssen Sie ein Besitzer oder Benutzer mit der Azure RBAC-Rolle „Benutzerzugriffsadministrator“ für das Speicherkonto sein.Wichtig
Blob-Speicher unterstützt keine Microsoft Entra ID-Dienstprinzipale.
Shared Access Signatures (SAS): Sie können Speicher-SAS-Token verwenden, um auf Azure Storage zuzugreifen. Mit SAS können Sie den Zugriff auf ein Speicherkonto mithilfe temporärer Token mit feiner Zugriffssteuerung einschränken.
Sie können nur SAS-Tokenberechtigungen erteilen, die Sie selbst für das Speicherkonto, den Container oder die Datei besitzen.
Kontoschlüssel: Sie können Zugriffsschlüssel für Speicherkonten verwenden, um den Zugriff auf Azure Storage zu verwalten. Speicherkonto-Zugriffsschlüssel bieten Vollzugriff auf die Konfiguration eines Speicherkontos sowie auf die Daten. Databricks empfiehlt die Verwendung eines Microsoft Entra ID-Dienstprinzipals oder eines SAS-Tokens anstelle von Kontoschlüsseln, um eine Verbindung mit Azure Storage herzustellen.
Um die Zugriffsschlüssel eines Kontos anzuzeigen, müssen Sie die Rolle des "Besitzers", "Mitwirkers" oder "Speicherkonto-Schlüsselbetreiberdienstes" für das Speicherkonto haben.
Databricks empfiehlt zum Speichern aller Anmeldeinformationen die Verwendung von Geheimnisbereichen. Sie können Benutzern, Dienstprinzipalen und Gruppen in Ihrem Arbeitsbereich Lesezugriff für den Geheimnisbereich einräumen. Dadurch werden die Azure-Anmeldeinformationen geschützt, während Benutzern der Zugriff auf Azure Storage ermöglicht wird. Informationen zum Erstellen eines geheimen Bereichs finden Sie unter Verwalten geheimer Bereiche.
Festlegen von Spark-Eigenschaften, um Azure-Anmeldeinformationen für den Zugriff auf Azure Storage zu konfigurieren
Sie können Spark-Eigenschaften festlegen, um Azure-Anmeldeinformationen für den Zugriff auf Azure Storage zu konfigurieren. Die Anmeldeinformationen können entweder auf einen Cluster oder ein Notebook festgelegt werden. Verwenden Sie gleichzeitig die Zugriffssteuerung für Cluster und Notebooks, um den Zugriff auf Azure Storage zu schützen. Siehe Compute-Berechtigungen und Zusammenarbeit mithilfe von Databricks-Notebooks.
Hinweis
Microsoft Entra ID-Dienstprinzipale können auch für den Zugriff auf Azure Storage aus einem SQL Warehouse verwendet werden, siehe Datenzugriffskonfigurationen.
Verwenden Sie zum Festlegen von Spark-Eigenschaften den folgenden Codeausschnitt in der Spark-Konfiguration eines Clusters oder in einem Notizbuch:
Azure-Dienstprinzipal
Verwenden Sie das folgende Format, um die Spark-Clusterkonfiguration festzulegen:
spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
Sie können spark.conf.set
in Notebooks verwenden, wie im folgenden Beispiel gezeigt:
service_credential = dbutils.secrets.get(scope="<secret-scope>",key="<service-credential-key>")
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
Ersetzen
-
<secret-scope>
durch den Namen des Databricks-Geheimnisbereichs. -
<service-credential-key>
durch den Namen des Schlüssels, der den geheimen Clientschlüssel enthält. -
<storage-account>
durch den Namen des Azure-Speicherkontos. -
<application-id>
mit der Anwendungs-ID (Client-ID) für die Microsoft Entra-ID-Anwendung. -
<directory-id>
mit der Verzeichnis-ID (Mandant-ID) für die Microsoft Entra-ID-Anwendung.
SAS-Token
Sie können SAS-Token für mehrere Speicherkonten in derselben Spark-Sitzung konfigurieren.
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))
Ersetzen
-
<storage-account>
mit dem Namen des Azure Storage-Kontos. -
<scope>
mit dem Namen des Azure Databricks-Geheimnisbereichs. -
<sas-token-key>
mit dem Namen des Schlüssels, der den Azure Storage-SAS-Token enthält.
Kontoschlüssel
spark.conf.set(
"fs.azure.account.key.<storage-account>.dfs.core.windows.net",
dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))
Ersetzen
-
<storage-account>
mit dem Namen des Azure Storage-Kontos. -
<scope>
mit dem Namen des Azure Databricks-Geheimnisbereichs. -
<storage-account-access-key>
mit dem Namen des Schlüssels, der den Zugriffsschlüssel für das Azure-Speicherkonto enthält.
Zugreifen auf Azure Storage
Sobald Sie die Anmeldeinformationen für den Zugriff auf Ihren Azure-Speichercontainer richtig konfiguriert haben, können Sie mithilfe von URIs mit Ressourcen im Speicherkonto interagieren. Databricks empfiehlt die Verwendung des abfss
-Treibers für mehr Sicherheit.
spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
CREATE TABLE <database-name>.<table-name>;
COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');
Notebook mit Beispielen
ADLS OAuth 2.0 mit Microsoft Entra ID (früher Azure Active Directory) und Dienstprinzipalen-Notizbuch
Bekannte Probleme mit Azure Data Lake Storage
Wenn Sie versuchen, auf einen über das Azure-Portal erstellten Speichercontainer zuzugreifen, wird möglicherweise der folgende Fehler angezeigt:
StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.
Wenn ein hierarchischer Namespace aktiviert ist, müssen Sie keine Container über das Azure-Portal erstellen. Wenn Sie dieses Problem feststellen, löschen Sie den Blob-Container über das Azure-Portal. Nach einigen Minuten können Sie auf den Container zugreifen. Alternativ können Sie Ihren abfss
-URI so ändern, dass er einen anderen Container verwendet, solange dieser Container nicht über das Azure-Portal erstellt wurde.
Informationen zu bekannten Problemen mit Azure Data Lake Storage finden Sie in der Microsoft-Dokumentation.
Veraltete Muster zum Speichern und Zugreifen auf Daten von Azure Databricks
Im Folgenden finden Sie veraltete Speichermuster:
- Databricks empfiehlt nicht mehr, externe Datenspeicherorte in das Databricks-Dateisystem einzubinden. Weitere Informationen finden Sie unter Bereitstellen von Cloudobjektspeicher in Azure Databricks.
- Databricks empfiehlt nicht mehr die Verwendung der Passthrough für Anmeldeinformationen mit Azure Data Lake Storage. Weitere Informationen finden Sie unter Zugriff auf Azure Data Lake Storage mithilfe von Passthrough für Microsoft Entra ID-Anmeldeinformationen (Legacy)