Verbinding maken met Azure Data Lake Storage Gen2 en Blob Storage
Notitie
In dit artikel worden verouderde patronen beschreven voor het configureren van toegang tot Azure Data Lake Storage Gen2. Databricks raadt het gebruik van Unity Catalog aan om toegang tot Azure Data Lake Storage Gen2 en volumes te configureren voor directe interactie met bestanden. Zie Verbinding maken met opslag en services voor cloudobjecten met behulp van Unity Catalog.
In dit artikel wordt uitgelegd hoe u vanuit Azure Databricks verbinding maakt met Azure Data Lake Storage Gen2 en Blob Storage.
Notitie
- Het verouderde Windows Azure Storage Blob-stuurprogramma (WASB) is afgeschaft. ABFS heeft talloze voordelen ten opzichte van WASB. Raadpleeg de Azure-documentatie over ABFS. Zie Verbinding maken met Azure Blob Storage met WASB (verouderd) voor documentatie voor het werken met het verouderde WASB-stuurprogramma.
- Azure heeft aangekondigd dat De buitengebruikstelling van Azure Data Lake Storage Gen1 in behandeling is. Azure Databricks raadt aan om alle gegevens van Azure Data Lake Storage Gen1 te migreren naar Azure Data Lake Storage Gen2. Als u nog niet bent gemigreerd, raadpleegt u Toegang tot Azure Data Lake Storage Gen1 vanuit Azure Databricks.
Verbinding maken met Azure Data Lake Storage Gen2 of Blob Storage met behulp van Azure-referenties
De volgende referenties kunnen worden gebruikt voor toegang tot Azure Data Lake Storage Gen2 of Blob Storage:
OAuth 2.0 met een Microsoft Entra ID-service-principal: Databricks raadt aan microsoft Entra ID-service-principals te gebruiken om verbinding te maken met Azure Data Lake Storage Gen2. Als u een Service-principal voor Microsoft Entra ID wilt maken en toegang wilt bieden tot Azure-opslagaccounts, raadpleegt u Toegang tot opslag met behulp van een service-principal en Microsoft Entra-id (Azure Active Directory).
Als u een Service-principal voor Microsoft Entra ID wilt maken, moet u de
Application Administrator
rol of deApplication.ReadWrite.All
machtiging in Microsoft Entra-id hebben. Als u rollen wilt toewijzen aan een opslagaccount, moet u een eigenaar of een gebruiker zijn met de rol User Access Beheer Azure RBAC in het opslagaccount.Belangrijk
Blob Storage biedt geen ondersteuning voor service-principals van Microsoft Entra ID.
Shared Access Signatures (SAS):u kunt SAS-tokens voor opslag gebruiken voor toegang tot Azure Storage. Met SAS kunt u de toegang tot een opslagaccount beperken met behulp van tijdelijke tokens met fijnmazig toegangsbeheer.
U kunt alleen een SAS-tokenmachtigingen verlenen die u zelf hebt voor het opslagaccount, de container of het bestand.
Accountsleutels: U kunt toegangssleutels voor opslagaccounts gebruiken om de toegang tot Azure Storage te beheren. Toegangssleutels voor opslagaccounts bieden volledige toegang tot de configuratie van een opslagaccount, evenals de gegevens. Databricks raadt aan om een Microsoft Entra ID-service-principal of een SAS-token te gebruiken om verbinding te maken met Azure Storage in plaats van accountsleutels.
Als u de toegangssleutels van een account wilt weergeven, moet u de rol Eigenaar, Inzender of Service voor sleuteloperator voor opslagaccounts hebben in het opslagaccount.
Databricks raadt aan geheime bereiken te gebruiken voor het opslaan van alle referenties. U kunt gebruikers, service-principals en groepen in uw werkruimte toegang verlenen om het geheime bereik te lezen. Hiermee worden de Azure-referenties beschermd, terwijl gebruikers toegang hebben tot Azure Storage. Zie Geheime bereiken als u een geheim bereik wilt maken.
Spark-eigenschappen instellen om Azure-referenties te configureren voor toegang tot Azure Storage
U kunt Spark-eigenschappen instellen om een Azure-referenties te configureren voor toegang tot Azure Storage. De referenties kunnen worden beperkt tot een cluster of een notebook. Gebruik toegangsbeheer voor clusters en notebooktoegangsbeheer samen om de toegang tot Azure Storage te beveiligen. Zie Compute-machtigingen en samenwerken met behulp van Databricks-notebooks.
Notitie
Service-principals van Microsoft Entra ID kunnen ook worden gebruikt voor toegang tot Azure Storage vanuit een SQL Warehouse. Zie Configuratie voor gegevenstoegang inschakelen.
Als u Spark-eigenschappen wilt instellen, gebruikt u het volgende fragment in de Spark-configuratie van een cluster of een notebook:
Azure-service-principal
Gebruik de volgende indeling om de Spark-clusterconfiguratie in te stellen:
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
U kunt dit gebruiken spark.conf.set
in notebooks, zoals wordt weergegeven in het volgende voorbeeld:
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")
Replace
<secret-scope>
met de naam van het geheime bereik van Databricks.<service-credential-key>
met de naam van de sleutel die het clientgeheim bevat.<storage-account>
met de naam van het Azure-opslagaccount.<application-id>
met de toepassings-id (client) voor de Microsoft Entra ID-toepassing.<directory-id>
met de map-id (tenant) voor de Microsoft Entra ID-toepassing.
SAS-tokens
U kunt SAS-tokens configureren voor meerdere opslagaccounts in dezelfde Spark-sessie.
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>"))
Replace
<storage-account>
met de naam van het Azure Storage-account.<scope>
met de naam van het geheime bereik van Azure Databricks.<sas-token-key>
met de naam van de sleutel die het SAS-token van Azure Storage bevat.
Accountsleutel
spark.conf.set(
"fs.azure.account.key.<storage-account>.dfs.core.windows.net",
dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))
Replace
<storage-account>
met de naam van het Azure Storage-account.<scope>
met de naam van het geheime bereik van Azure Databricks.<storage-account-access-key>
met de naam van de sleutel die de toegangssleutel van het Azure-opslagaccount bevat.
Toegang tot Azure Storage
Zodra u referenties goed hebt geconfigureerd voor toegang tot uw Azure-opslagcontainer, kunt u met behulp van URI's communiceren met resources in het opslagaccount. Databricks raadt het gebruik van het abfss
stuurprogramma aan voor een betere beveiliging.
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');
Voorbeeld van notebook
AdLS Gen2 OAuth 2.0 met Microsoft Entra ID (voorheen Azure Active Directory) service-principals notebook
Bekende problemen met Azure Data Lake Storage Gen2
Als u probeert toegang te krijgen tot een opslagcontainer die is gemaakt via Azure Portal, wordt mogelijk de volgende fout weergegeven:
StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.
Wanneer een hiƫrarchische naamruimte is ingeschakeld, hoeft u geen containers te maken via Azure Portal. Als u dit probleem ziet, verwijdert u de Blob-container via Azure Portal. Na enkele minuten hebt u toegang tot de container. U kunt uw abfss
URI ook wijzigen om een andere container te gebruiken, zolang deze container niet is gemaakt via Azure Portal.
Zie bekende problemen met Azure Data Lake Storage Gen2 in de Microsoft-documentatie.
Afgeschafte patronen voor het opslaan en openen van gegevens vanuit Azure Databricks
Hier volgen afgeschafte opslagpatronen:
Databricks raadt niet langer aan om externe gegevenslocaties te koppelen aan het Databricks-bestandssysteem. Zie Koppelen van cloudobjectopslag in Azure Databricks.
Databricks raadt het gebruik van referentie-passthrough met Azure Data Lake Storage Gen2 niet langer aan. Zie Toegang tot Azure Data Lake Storage met behulp van Microsoft Entra ID referentie passthrough (verouderd).