Nawiązywanie połączenia z usługą Azure Data Lake Storage i usługą Blob Storage

Ważne

Ta dokumentacja została wycofana i może nie zostać zaktualizowana.

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 Używanie tożsamości zarządzanych platformy Azure w Unity Catalog, aby uzyskać dostęp do pamięci masowej.

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

Krok 1. Rejestrowanie aplikacji Microsoft Entra ID

Zarejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft powoduje utworzenie jednostki usługi, której można użyć do zapewnienia dostępu do kont usługi Azure Storage.

Aby zarejestrować aplikację Microsoft Entra ID, musisz posiadać rolę Application Administrator lub uprawnienie Application.ReadWrite.All w Microsoft Entra ID.

  1. W witrynie Azure Portal przejdź do usługi Microsoft Entra ID .
  2. W obszarze Zarządzanie kliknij pozycję Rejestracje aplikacji.
  3. Kliknij pozycję + Nowa rejestracja. Wprowadź nazwę aplikacji i kliknij przycisk Zarejestruj.
  4. Kliknij Certyfikaty i tajemnice.
  5. Kliknij + Nowy sekret klienta.
  6. Dodaj opis dla tajnego i kliknij Dodaj.
  7. Skopiuj i zapisz wartość nowego sekretu.
  8. W przeglądzie rejestracji aplikacji skopiuj i zapisz identyfikator aplikacji (klienta) oraz identyfikator katalogu (dzierżawy).

Krok 2. Przypisywanie ról do jednostki usługi

Dostęp do zasobów magazynu można kontrolować, przypisując role do rejestracji aplikacji Microsoft Entra ID skojarzonej z kontem magazynu. W zależności od określonych wymagań może być konieczne przypisanie innych ról.

Aby przypisać role na koncie magazynu, musisz mieć rolę Właściciela lub Administratora dostępu użytkowników RBAC platformy Azure na koncie magazynu.

  1. W portalu Azure przejdź do usługi Konta magazynu.
  2. Wybierz konto usługi Azure Storage do użycia z tą rejestracją aplikacji.
  3. Kliknij Kontrola dostępu (IAM).
  4. Kliknij pozycję + Dodaj i wybierz pozycję Dodaj przypisanie roli z menu rozwijanego.
  5. Ustaw pole Wybierz na nazwę aplikacji Microsoft Entra ID i ustaw pozycję Rola na Współtwórca danych obiektów blob w usłudze Storage.
  6. Kliknij Zapisz.

Krok 3. Konfigurowanie poświadczeń Azure w Azure Databricks

Skonfiguruj klaster lub notatnik Azure Databricks przy użyciu poświadczeń konta usługi Azure Storage, do którego chcesz uzyskać dostęp.

Obsługiwane typy poświadczeń i przechowywanie wpisów tajnych

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ć nazwę główną usługi Microsoft Entra ID i zapewnić jej dostęp do kont usługi Azure Storage, wykonaj powyższe kroki 1 i 2.

    Aby utworzyć podmiot usługi Microsoft Entra ID, musisz mieć Application Administrator rolę lub Application.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ółpracownika lub operatora usługi 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.

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.

Ustawianie właściwości platformy Spark w celu skonfigurowania poświadczeń Azure

Możesz ustawić właściwości platformy Spark, aby skonfigurować poświadczenia Azure w celu uzyskania dostępu do magazynu Azure. 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.

Warning

Klient metastore Hive ignoruje konfiguracje sesji Spark ustawione na poziomie notatnika. Jeśli ustawisz poświadczenia usługi Azure Storage za pomocą spark.conf.set() w notesie, będą one miały zastosowanie do operacji platformy Spark w tym notesie, ale nie do operacji metastore’u Hive, takich jak ALTER TABLE ... SET LOCATION. Dla Hive DDL, które wymaga dostępu do pamięci Azure, ustaw poświadczenia w konfiguracji Spark klastra zamiast w notatniku.

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

Zastąp

  • <storage-account> przy użyciu nazwy konta usługi Azure Storage.
  • <scope> z nazwą zakresu sekretu usługi Azure Databricks.
  • <storage-account-access-key> z nazwą klucza zawierającego klucz dostępu do konta usługi Azure Storage.

Krok 4. Uzyskiwanie dostępu do magazynu Azure

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)

Zdobądź notatnik

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: