Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Den här dokumentationen har dragits tillbaka och kanske inte uppdateras.
Den här artikeln beskriver äldre mönster för att konfigurera åtkomst till Azure Data Lake Storage. Databricks rekommenderar att du använder Unity Catalog för att konfigurera åtkomst till Azure Data Lake Storage och volymer för direkt interaktion med filer. Se Använda Azure-hanterade identiteter i Unity Catalog för att få åtkomst till lagring.
Den här artikeln beskriver hur du ansluter till Azure Data Lake Storage och Blob Storage från Azure Databricks.
Anteckning
Den äldre Windows Azure Storage Blob-drivrutinen (WASB) har föråldrats. ABFS har många fördelar jämfört med WASB. Se Azure-dokumentationen på ABFS. Dokumentation om hur du arbetar med den äldre WASB-drivrutinen finns i Ansluta till Azure Blob Storage med WASB (äldre).
Steg 1: Registrera ett Microsoft Entra ID program
När du registrerar ett program med Microsoft Entra-ID skapas ett huvudnamn för tjänsten som du kan använda för att ge åtkomst till Azure-lagringskonton.
Om du vill registrera ett Microsoft Entra-ID-program måste du ha Application Administrator rollen eller behörigheten Application.ReadWrite.All i Microsoft Entra-ID.
- I Azure Portal går du till Microsoft Entra ID-tjänsten.
- Under Hantera klickar du på Appregistreringar.
- Klicka på + Ny registrering. Ange ett namn för programmet och klicka på Registrera.
- Klicka på Certifikat och hemligheter.
- Klicka på + Ny klienthemlighet.
- Lägg till en beskrivning av hemligheten och klicka på Lägg till.
- Kopiera och spara värdet för den nya hemligheten.
- I översikten över applikationsregistrering kopierar och sparar du applikations-ID:t (klient) och katalog-ID:t (uthyrd).
Steg 2: Tilldela roller till tjänstens huvudobjekt
Du styr åtkomsten till lagringsresurser genom att tilldela roller till en Microsoft Entra ID-programregistrering som är associerad med lagringskontot. Du kan behöva tilldela andra roller beroende på specifika krav.
Om du vill tilldela roller för ett lagringskonto måste du ha rollen Ägare eller Användaråtkomstadministratör för Azure RBAC på lagringskontot.
- I Azure-portalen går du till tjänsten Lagringskonton.
- Välj ett Azure Storage-konto som ska användas med den här programregistreringen.
- Klicka på Åtkomstkontroll (IAM).
- Klicka på + Lägg till och välj Lägg till rolltilldelning på den nedrullningsbara menyn.
- Ställ in fältet Välj till namnet på Microsoft Entra ID-applikationen och ange Rollen till Storage Blob Data Contributor.
- Klicka på Spara.
Steg 3: Konfigurera Azure autentiseringsuppgifter i Azure Databricks
Konfigurera ditt Azure Databricks-kluster eller din anteckningsbok med autentiseringsuppgifterna för det Azure-lagringskonto som du vill få åtkomst till.
Typer av autentiseringsuppgifter som stöds och hemlig lagring
Följande autentiseringsuppgifter kan användas för att komma åt Azure Data Lake Storage eller Blob Storage:
OAuth 2.0 med en tjänstehuvudkonto för Microsoft Entra ID: Databricks rekommenderar att du använder ett tjänstehuvudkonto för Microsoft Entra ID för att ansluta till Azure Data Lake Storage. För att skapa ett Microsoft Entra ID-tjänsthuvudnamn och ge det åtkomst till Azure-lagringskonton, slutför du steg 1 och 2 ovan.
Om du vill skapa ett Microsoft Entra ID-servicekontoprincip måste du ha rollen
Application Administratoreller behörighetenApplication.ReadWrite.Alli Microsoft Entra ID. För att kunna tilldela roller till ett lagringskonto måste du vara ägare eller ha rollen som Administratör för användaråtkomst i Azure RBAC för lagringskontot.Viktigt!
Blob Storage stöder inte tjänsthuvudmän för Microsoft Entra ID.
Signaturer för delad åtkomst (SAS): Du kan använda SAS-token för lagring för att få åtkomst till Azure Storage. Med SAS kan du begränsa åtkomsten till ett lagringskonto med hjälp av tillfälliga token med detaljerad åtkomstkontroll.
Du kan bara bevilja en SAS-tokenbehörighet som du har på lagringskontot, containern eller filen själv.
Kontonycklar: Du kan använda åtkomstnycklar för lagringskonton för att hantera åtkomst till Azure Storage. Åtkomstnycklar för lagringskonto ger fullständig åtkomst till konfigurationen av ett lagringskonto samt data. Databricks rekommenderar att du använder en serviceprincipal för Microsoft Entra ID eller en SAS-token för att ansluta till Azure Storage istället för kontonycklar.
Om du vill visa ett kontos åtkomstnycklar måste du ha rollen Ägare, Deltagare eller Nyckeloperatör för lagringskonto på lagringskontot.
Databricks rekommenderar att du använder sekretessområden för att lagra alla inloggningsuppgifter. Du kan ge användare, tjänstens huvudprinciper och grupper på din arbetsyta åtkomst för att läsa den hemliga omfattningen. Detta skyddar Azure-autentiseringsuppgifterna samtidigt som användarna får åtkomst till Azure Storage. Information om hur du skapar ett hemligt omfång finns i Hantera hemliga omfång.
Anteckning
Microsoft Entra ID-tjänstens tjänsteprinciper kan också användas för att komma åt Azure Storage från ett SQL-datalager, se Konfigurationer för dataåtkomst.
Ange Spark-egenskaper för att konfigurera Azure autentiseringsuppgifter
Du kan ange Spark-egenskaper för att konfigurera Azure autentiseringsuppgifter för åtkomst Azure lagring. Autentiseringsuppgifterna kan begränsas till antingen ett kluster eller en notebook-fil. Använd både åtkomstkontroll för kluster och åtkomstkontroll för notebook-filer tillsammans för att skydda åtkomsten till Azure Storage. Se Beräkningsbehörigheter och Samarbeta med Databricks anteckningsböcker.
Om du vill ange Spark-egenskaper använder du följande kodfragment i ett klusters Spark-konfiguration eller en notebook-fil:
Azure-tjänsthuvudnamn
Använd följande format för att ange Spark-klustrets konfiguration:
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
Du kan använda spark.conf.set i notebook-filer, som du ser i följande exempel:
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")
Ersätt
-
<secret-scope>med namnet på Databricks hemlighetsnyckelområde. -
<service-credential-key>med namnet på nyckeln som innehåller klienthemligheten. -
<storage-account>med namnet på Azure Storage-kontot. -
<application-id>med program-ID (klient) för Microsoft Entra ID-programmet. -
<directory-id>med katalog (klientorganisation) ID för Microsoft Entra ID-programmet.
SAS-token
Du kan konfigurera SAS-token för flera lagringskonton i samma Spark-session.
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>"))
Ersätt
-
<storage-account>med namnet på Azure Storage-kontot. -
<scope>med namnet på Azure Databricks-hemlighetsomfånget. -
<sas-token-key>med namnet på nyckeln som innehåller Azure Storage SAS-token.
Kontonyckel
spark.conf.set(
"fs.azure.account.key.<storage-account>.dfs.core.windows.net",
dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))
Ersätt
-
<storage-account>med namnet på Azure Storage-kontot. -
<scope>med namnet på Azure Databricks-hemlighetsomfånget. -
<storage-account-access-key>med namnet på nyckeln som innehåller åtkomstnyckeln för Azure-lagringskontot.
Steg 4: Åtkomst Azure lagring
När du har konfigurerat autentiseringsuppgifterna för att få åtkomst till azure-lagringscontainern kan du interagera med resurser i lagringskontot med hjälp av URI:er. Databricks rekommenderar att du använder abfss drivrutinen för större säkerhet.
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');
Exempelnotebook
ADLS OAuth 2.0 med Microsoft Entra ID (tidigare Azure Active Directory) anteckningsbok för systemanvändare
kända problem med Azure Data Lake Storage
Om du försöker komma åt en lagringscontainer som skapats via Azure Portal kan du få följande fel:
StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.
När ett hierarkiskt namnområde är aktiverat behöver du inte skapa containrar via Azure-portalen. Om du ser det här problemet tar du bort blobcontainern via Azure Portal. Efter några minuter kan du komma åt containern. Du kan också ändra din abfss URI så att den använder en annan container, så länge containern inte skapas via Azure Portal.
Se Kända problem med Azure Data Lake Storage i Microsoft-dokumentationen.
Inaktuella mönster för att lagra och komma åt data från Azure Databricks
Följande är inaktuella lagringsmönster:
- Databricks rekommenderar inte längre montering av externa dataplatser till Databricks-filsystemet. Se Montera molnobjektlagring på Azure Databricks.
- Databricks rekommenderar inte längre att använda passering av autentiseringsuppgifter med Azure Data Lake Storage. Se även Åtkomst av Azure Data Lake Storage med hjälp av Microsoft Entra ID för vidarebefordran av autentiseringsuppgifter (äldre teknik).