Verbinding maken met Azure Data Lake Storage en Blob Storage

Belangrijk

Deze documentatie is buiten gebruik gesteld en wordt mogelijk niet bijgewerkt.

In dit artikel worden verouderde patronen beschreven voor het configureren van toegang tot Azure Data Lake Storage. Databricks raadt het gebruik van Unity Catalog aan om de toegang tot Azure Data Lake Storage en volumes te configureren voor directe interactie met bestanden. Zie door Azure beheerde identiteiten gebruiken in Unity Catalog om toegang te krijgen tot opslag.

In dit artikel wordt uitgelegd hoe u vanuit Azure Databricks verbinding maakt met Azure Data Lake Storage 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.

Stap 1: Een Microsoft Entra ID-toepassing registreren

Als u een toepassing registreert bij Microsoft Entra ID, wordt een service-principal gemaakt die u kunt gebruiken om toegang te bieden tot Azure-opslagaccounts.

Als u een Microsoft Entra ID-toepassing wilt registreren, moet u de Application Administrator rol of de Application.ReadWrite.All machtiging hebben in Microsoft Entra-id.

  1. Ga in Azure Portal naar de Microsoft Entra ID-service .
  2. Klik onder Beheren op App-registraties.
  3. Klik op + Nieuwe registratie. Voer een naam in voor de toepassing en klik op Registreren.
  4. Klik op Certificaten en geheimen.
  5. Klik op + Nieuw clientgeheim.
  6. Voeg een beschrijving toe voor het geheim en klik op Toevoegen.
  7. Kopieer en sla de waarde voor het nieuwe geheim op.
  8. Kopieer en sla in het overzicht van de applicatieregistratie de Applicatie-id (client) en Directory-id (tenant) op.

Stap 2: Rollen toewijzen aan de service-principal

U kunt de toegang tot opslagbronnen beheren door rollen toe te wijzen aan een Microsoft Entra ID-toepassingsregistratie die is gekoppeld aan het opslagaccount. Mogelijk moet u andere rollen toewijzen, afhankelijk van specifieke vereisten.

Als u rollen wilt toewijzen aan een opslagaccount, moet u de Azure RBAC-rol Eigenaar of Gebruikertoegangsbeheerder voor het opslagaccount hebben.

  1. Ga in de Azure-portal naar de service Storage-accounts.
  2. Selecteer een Azure-opslagaccount dat u met deze toepassingsregistratie wilt gebruiken.
  3. Klik op Toegangsbeheer (IAM).
  4. Klik op + Toevoegen en selecteer Roltoewijzing toevoegen in de vervolgkeuzelijst.
  5. Stel het veld Selecteren in op de naam van de Microsoft Entra-id-toepassing en stel Rol in op Inzender voor opslagblobgegevens.
  6. Klik op Opslaan.

Stap 3: Azure-aanmeldingsgegevens configureren in Azure Databricks

Configureer uw Azure Databricks-cluster of -notebook met de aanmeldingsgegevens voor het Azure-opslagaccount waartoe u toegang wilt krijgen.

Ondersteunde typen inloggegevens en opslag van geheimen

De volgende referenties kunnen worden gebruikt voor toegang tot Azure Data Lake Storage 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. Als u een Microsoft Entra ID service-principal wilt maken en toegang wilt bieden tot Azure opslagaccounts, voert u stap 1 en 2 hierboven uit.

    Als u een Microsoft Entra ID-service-principal wilt maken, moet u de Application Administrator-rol of de Application.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 secret scopes te gebruiken om alle inloggegevens op te slaan. 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. Raadpleeg Secret scopes beheren om een secret scope te maken.

Notitie

Service-principals van Microsoft Entra ID kunnen ook worden gebruikt voor toegang tot Azure Storage vanuit een SQL-warehouse. Zie Configuraties voor gegevenstoegang.

Spark-eigenschappen instellen om Azure referenties te configureren

U kunt Spark-eigenschappen instellen om Azure referenties te configureren voor toegang tot Azure-opslag. De aanmeldingsgegevens 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.

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 spark.conf.set in notebooks gebruiken, zoals in het volgende voorbeeld wordt weergegeven:

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")

Vervangen

  • <secret-scope> met de naam van de secret scope 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-id) voor de Microsoft Entra ID-toepassing.
  • <directory-id> met de Directory-id (tenant) van 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>"))

Vervangen

  • <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>"))

Vervangen

  • <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.

Stap 4: Toegang tot Azure-opslag

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 OAuth 2.0 met Microsoft Entra ID (voorheen Azure Active Directory) service-principals notebook

Haal notitieblok op

Bekende problemen met Azure Data Lake Storage

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 in de Microsoft-documentatie.

Verouderde patronen voor het opslaan van en toegang krijgen tot gegevens in Azure Databricks

De volgende opslagpatronen zijn verouderd: