Nawiązywanie połączenia z usługą Azure Data Lake Storage i usługą Blob Storage
Uwaga
W tym artykule opisano starsze wzorce konfigurowania dostępu do usługi Azure Data Lake Storage. Usługa Databricks zaleca używanie usługi Unity Catalog do konfigurowania dostępu do usługi Azure Data Lake Storage i woluminów w celu bezpośredniej interakcji z plikami. Zobacz Połącz się z chmurową pamięcią obiektową i usługami za pomocą katalogu Unity.
W tym artykule wyjaśniono, jak nawiązać połączenie z usługą Azure Data Lake Storage i usługą Blob Storage z usługi Azure Databricks.
Uwaga
- Starszy sterownik obiektów blob usługi Microsoft Azure Storage (WASB) został wycofany. ABFS ma więcej zalet niż WASB. Zobacz dokumentację platformy Azure dotyczącą systemu ABFS. Aby uzyskać dokumentację dotyczącą pracy ze starszym sterownikiem WASB, zobacz Connect to Azure Blob Storage with WASB (legacy)(Nawiązywanie połączenia z usługą Azure Blob Storage przy użyciu starszej wersji systemu WASB).
Połącz się z usługą Azure Data Lake Storage lub Blob Storage, używając poświadczeń platformy Azure
Następujące poświadczenia mogą służyć do uzyskiwania dostępu do usługi Azure Data Lake Storage lub Usługi Blob Storage:
OAuth 2.0 z jednostką usługi Microsoft Entra ID: usługa Databricks zaleca używanie jednostek usługi Microsoft Entra ID w celu nawiązania połączenia z usługą Azure Data Lake Storage. Aby utworzyć jednostkę usługi Microsoft Entra ID i zapewnić jej dostęp do kont usługi Azure Storage, zobacz Uzyskiwanie dostępu do magazynu przy użyciu jednostki usługi i Microsoft Entra ID (Azure Active Directory).
Aby utworzyć podmiot usługi Microsoft Entra ID, musisz mieć
Application Administrator
rolę lubApplication.ReadWrite.All
uprawnienie w Microsoft Entra ID. Aby przypisać role na koncie przechowywania, musisz być właścicielem lub użytkownikiem z rolą User Access Administrator RBAC platformy Azure na tym koncie.Ważne
Usługa Blob Storage nie obsługuje jednostek usługi Microsoft Entra ID.
Sygnatury dostępu współdzielonego (SAS): można użyć tokenów SAS do uzyskiwania dostępu do usługi Azure Storage. Za pomocą sygnatury dostępu współdzielonego można ograniczyć dostęp do konta magazynu przy użyciu tokenów tymczasowych z szczegółową kontrolą dostępu.
Możesz przyznać uprawnienia do tokenu SAS tylko wtedy, gdy sam masz je na koncie magazynu, kontenerze lub pliku.
Klucze konta: możesz użyć kluczy dostępu do konta magazynu, aby zarządzać dostępem do usługi Azure Storage. Klucze dostępu do konta magazynu zapewniają pełny dostęp do konfiguracji konta magazynu, a także danych. Databricks zaleca użycie jednostki usługi Microsoft Entra ID lub tokenu SAS do połączenia z Azure Storage zamiast kluczy kont.
Aby wyświetlić klucze dostępu konta, musisz mieć rolę właściciela, współautora lub operatora klucza konta magazynu na koncie magazynu.
Databricks zaleca używanie tajnych zakresów do przechowywania wszystkich poświadczeń. Możesz przyznać użytkownikom, jednostkom usługi i grupom w obszarze roboczym dostęp do odczytu obszaru tajnego. Chroni to poświadczenia platformy Azure, umożliwiając użytkownikom dostęp do usługi Azure Storage. Aby utworzyć zakres tajny, zobacz Zarządzanie zakresami tajnymi.
Ustawianie właściwości platformy Spark w celu skonfigurowania poświadczeń platformy Azure w celu uzyskania dostępu do usługi Azure Storage
Możesz ustawić właściwości platformy Spark, aby skonfigurować poświadczenia platformy Azure w celu uzyskania dostępu do usługi Azure Storage. Poświadczenia mogą być ograniczone do klastra lub notesu. Użyj kontroli dostępu do klastra i kontroli dostępu do notesu razem, aby chronić dostęp do usługi Azure Storage. Zobacz Uprawnienia komputerowe i Współpracuj za pomocą notatników Databricks.
Uwaga
Jednostki usługi Microsoft Entra ID mogą również służyć do uzyskiwania dostępu do usługi Azure Storage z usługi SQL Warehouse. Zobacz Konfiguracje dostępu do danych.
Aby ustawić właściwości platformy Spark, użyj następującego fragmentu kodu w konfiguracji platformy Spark klastra lub notesu:
Jednostka usługi platformy Azure
Użyj następującego formatu, aby ustawić konfigurację Spark klastra.
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
Możesz użyć spark.conf.set
w notesach, jak pokazano w poniższym przykładzie:
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")
Zastąp
-
<secret-scope>
z nazwą zakresu tajemnic Databricks. -
<service-credential-key>
z nazwą klucza zawierającego klucz tajny klienta. -
<storage-account>
z nazwą konta usługi Azure Storage. z identyfikatorem aplikacji (klienta) dla aplikacji Microsoft Entra ID. -
<directory-id>
z identyfikatorem katalogu (dzierżawy) dla aplikacji Microsoft Entra ID.
Tokeny sygnatur dostępu współdzielonego
Tokeny SAS można skonfigurować dla wielu kont magazynu w tej samej sesji Spark.
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>"))
Zastąp
-
<storage-account>
przy użyciu nazwy konta usługi Azure Storage. -
<scope>
z nazwą zakresu sekretu usługi Azure Databricks. -
<sas-token-key>
z nazwą klucza zawierającego token SAS usługi Azure Storage.
Klucz konta
spark.conf.set(
"fs.azure.account.key.<storage-account>.dfs.core.windows.net",
dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))
Zamień
-
<storage-account>
przy użyciu nazwy konta usługi Azure Storage. -
<scope>
z nazwą zakresu tajnych informacji usługi Azure Databricks. -
<storage-account-access-key>
z nazwą klucza zawierającego klucz dostępu do konta usługi Azure Storage.
Uzyskiwanie dostępu do usługi Azure Storage
Po prawidłowym skonfigurowaniu poświadczeń w celu uzyskania dostępu do kontenera usługi Azure Storage możesz wchodzić w interakcje z zasobami na koncie magazynu przy użyciu identyfikatorów URI. Databricks zaleca używanie sterownika abfss
dla większego bezpieczeństwa.
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');
Przykładowy notes
Notatnik jednostek usługi ADLS OAuth 2.0 z Microsoft Entra ID (dawniej Azure Active Directory)
znanych problemów z usługą Azure Data Lake Storage
Jeśli spróbujesz uzyskać dostęp do kontenera magazynu utworzonego za pośrednictwem witryny Azure Portal, może zostać wyświetlony następujący błąd:
StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.
Po włączeniu hierarchicznej przestrzeni nazw nie trzeba tworzyć kontenerów za pośrednictwem witryny Azure Portal. Jeśli widzisz ten problem, usuń kontener obiektów blob za pośrednictwem witryny Azure Portal. Po kilku minutach możesz uzyskać dostęp do kontenera. Alternatywnie, możesz zmienić abfss
identyfikator URI, aby używał innego kontenera, o ile ten kontener nie zostanie utworzony za pośrednictwem portalu Azure.
Zobacz Znane problemy z usługą Azure Data Lake Storage w dokumentacji firmy Microsoft.
Przestarzałe wzorce przechowywania danych i uzyskiwania do nich dostępu z usługi Azure Databricks
Poniżej przedstawiono przestarzałe wzorce przechowywania danych:
- Usługa Databricks nie rekomenduje już montowania zewnętrznych lokalizacji danych w systemie plików Databricks. Zobacz Instalowanie magazynu obiektów w chmurze w usłudze Azure Databricks.
- Databricks nie zaleca już korzystania z funkcji przekazywania poświadczeń w usłudze Azure Data Lake Storage. Zobacz Uzyskaj dostęp do Azure Data Lake Storage przy użyciu przejścia poświadczeń Microsoft Entra ID (wersja archiwalna).