Uzyskiwanie dostępu do usługi Azure Data Lake Storage Gen1 z usługi Azure Databricks

Firma Microsoft ogłosiła planowane wycofanie usługi Azure Data Lake Storage Gen1 (dawniej Azure Data Lake Store, znanej również jako ADLS) i zaleca wszystkim użytkownikom migrację do usługi Azure Data Lake Storage Gen2. Usługa Databricks zaleca uaktualnienie do usługi Azure Data Lake Storage Gen2 w celu uzyskania najlepszej wydajności i nowych funkcji.

Istnieją dwa sposoby uzyskiwania dostępu do usługi Azure Data Lake Storage Gen1:

  1. Przekaż poświadczenia microsoft Entra ID (dawniej Azure Active Directory), znane również jako przekazywanie poświadczeń.
  2. Bezpośrednie używanie jednostki usługi.

Automatyczne uzyskiwanie dostępu przy użyciu poświadczeń identyfikatora entra firmy Microsoft (dawniej Azure Active Directory)

Możesz uwierzytelnić się automatycznie w usłudze Azure Data Lake Storage Gen1 z klastrów usługi Azure Databricks przy użyciu tej samej tożsamości identyfikatora Entra firmy Microsoft, której używasz do logowania się do usługi Azure Databricks. Po włączeniu klastra dla przekazywania poświadczeń identyfikatora entra firmy Microsoft polecenia uruchamiane w tym klastrze będą mogły odczytywać i zapisywać dane w usłudze Azure Data Lake Storage Gen1 bez konieczności konfigurowania poświadczeń jednostki usługi na potrzeby dostępu do magazynu.

Aby uzyskać pełne instrukcje dotyczące konfiguracji i użycia, zobacz Access Azure Data Lake Storage using Microsoft Entra ID (dawniej Azure Active Directory) credential passthrough (starsza wersja).

Tworzenie i udzielanie uprawnień do jednostki usługi

Jeśli wybrana metoda dostępu wymaga jednostki usługi z odpowiednimi uprawnieniami i nie masz jej, wykonaj następujące kroki:

  1. Utwórz aplikację Microsoft Entra ID (dawniej Azure Active Directory) i jednostkę usługi, która może uzyskiwać dostęp do zasobów. Zwróć uwagę na następujące właściwości:
    • application-id: identyfikator, który jednoznacznie identyfikuje aplikację kliencą.
    • directory-id: identyfikator, który jednoznacznie identyfikuje wystąpienie identyfikatora Entra firmy Microsoft.
    • service-credential: ciąg używany przez aplikację do potwierdzenia tożsamości.
  2. Zarejestruj jednostkę usługi, udzielając poprawnego przypisania roli, takiego jak Współautor, na koncie usługi Azure Data Lake Storage Gen1.

Uzyskiwanie dostępu bezpośrednio za pomocą interfejsów API platformy Spark przy użyciu jednostki usługi i protokołu OAuth 2.0

Aby odczytać dane z konta usługi Azure Data Lake Storage Gen1, możesz skonfigurować platformę Spark do używania poświadczeń usługi przy użyciu następującego fragmentu kodu w notesie:

spark.conf.set("fs.adl.oauth2.access.token.provider.type", "ClientCredential")
spark.conf.set("fs.adl.oauth2.client.id", "<application-id>")
spark.conf.set("fs.adl.oauth2.credential", dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential>"))
spark.conf.set("fs.adl.oauth2.refresh.url", "https://login.microsoftonline.com/<directory-id>/oauth2/token")

where

  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")pobiera klucz dostępu konta magazynu, który został zapisany jako wpis tajny w zakresie wpisu tajnego.

Po skonfigurowaniu poświadczeń możesz użyć standardowych interfejsów API spark i Databricks w celu uzyskania dostępu do zasobów. Na przykład:

val df = spark.read.format("parquet").load("adl://<storage-resource>.azuredatalakestore.net/<directory-name>")

dbutils.fs.ls("adl://<storage-resource>.azuredatalakestore.net/<directory-name>")

Usługa Azure Data Lake Storage Gen1 zapewnia kontrolę dostępu na poziomie katalogu, dlatego jednostka usługi musi mieć dostęp do katalogów, z których chcesz odczytywać dane, a także z zasobu usługi Azure Data Lake Storage Gen1.

Dostęp za pośrednictwem magazynu metadanych

Aby uzyskać dostęp do adl:// lokalizacji określonych w magazynie metadanych, należy określić opcje konfiguracji poświadczeń usługi Hadoop jako opcje platformy Spark podczas tworzenia klastra, dodając spark.hadoop. prefiks do odpowiednich kluczy konfiguracji usługi Hadoop, aby propagować je do konfiguracji usługi Hadoop używanych przez magazyn metadanych:

spark.hadoop.fs.adl.oauth2.access.token.provider.type ClientCredential
spark.hadoop.fs.adl.oauth2.client.id <application-id>
spark.hadoop.fs.adl.oauth2.credential <service-credential>
spark.hadoop.fs.adl.oauth2.refresh.url https://login.microsoftonline.com/<directory-id>/oauth2/token

Ostrzeżenie

  • Te poświadczenia są dostępne dla wszystkich użytkowników, którzy uzyskują dostęp do klastra.

Instalowanie zasobu lub folderu usługi Azure Data Lake Storage Gen1

Aby zainstalować w nim zasób usługi Azure Data Lake Storage Gen1 lub folder, użyj następującego polecenia:

Python

configs = {"fs.adl.oauth2.access.token.provider.type": "ClientCredential",
          "fs.adl.oauth2.client.id": "<application-id>",
          "fs.adl.oauth2.credential": dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential>"),
          "fs.adl.oauth2.refresh.url": "https://login.microsoftonline.com/<directory-id>/oauth2/token"}

# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "adl://<storage-resource>.azuredatalakestore.net/<directory-name>",
  mount_point = "/mnt/<mount-name>",
  extra_configs = configs)

Scala

val configs = Map(
  "fs.adl.oauth2.access.token.provider.type" -> "ClientCredential",
  "fs.adl.oauth2.client.id" -> "<application-id>",
  "fs.adl.oauth2.credential" -> dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential>"),
  "fs.adl.oauth2.refresh.url" -> "https://login.microsoftonline.com/<directory-id>/oauth2/token")

// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "adl://<storage-resource>.azuredatalakestore.net/<directory-name>",
  mountPoint = "/mnt/<mount-name>",
  extraConfigs = configs)

where

  • <mount-name> to ścieżka systemu plików DBFS reprezentująca miejsce instalacji konta usługi Azure Data Lake Storage Gen1 lub folderu (określonego w sourcepliku ) w systemie plików DBFS.
  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")pobiera klucz dostępu konta magazynu, który został zapisany jako wpis tajny w zakresie wpisu tajnego.

Uzyskiwanie dostępu do plików w kontenerze tak, jakby były plikami lokalnymi, na przykład:

Python

df = spark.read.format("text").load("/mnt/<mount-name>/....")
df = spark.read.format("text").load("dbfs:/mnt/<mount-name>/....")

Scala

val df = spark.read.format("text").load("/mnt/<mount-name>/....")
val df = spark.read.format("text").load("dbfs:/mnt/<mount-name>/....")

Konfigurowanie poświadczeń usługi dla wielu kont

Możesz skonfigurować poświadczenia usługi dla wielu kont usługi Azure Data Lake Storage Gen1 do użycia w ramach jednej sesji platformy Spark, dodając account.<account-name> do kluczy konfiguracji. Jeśli na przykład chcesz skonfigurować poświadczenia dla kont w celu uzyskania dostępu adl://example1.azuredatalakestore.net i adl://example2.azuredatalakestore.net, możesz to zrobić w następujący sposób:

spark.conf.set("fs.adl.oauth2.access.token.provider.type", "ClientCredential")

spark.conf.set("fs.adl.account.example1.oauth2.client.id", "<application-id-example1>")
spark.conf.set("fs.adl.account.example1.oauth2.credential", dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential-example1>"))
spark.conf.set("fs.adl.account.example1.oauth2.refresh.url", "https://login.microsoftonline.com/<directory-id-example1>/oauth2/token")

spark.conf.set("fs.adl.account.example2.oauth2.client.id", "<application-id-example2>")
spark.conf.set("fs.adl.account.example2.oauth2.credential", dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential-example2>"))
spark.conf.set("fs.adl.account.example2.oauth2.refresh.url", "https://login.microsoftonline.com/<directory-id-example2>/oauth2/token")

Działa to również w przypadku konfiguracji platformy Spark klastra:

spark.hadoop.fs.adl.oauth2.access.token.provider.type ClientCredential

spark.hadoop.fs.adl.account.example1.oauth2.client.id <application-id-example1>
spark.hadoop.fs.adl.account.example1.oauth2.credential <service-credential-example1>
spark.hadoop.fs.adl.account.example1.oauth2.refresh.url https://login.microsoftonline.com/<directory-id-example1>/oauth2/token

spark.hadoop.fs.adl.account.example2.oauth2.client.id <application-id-example2>
spark.hadoop.fs.adl.account.example2.oauth2.credential <service-credential-example2>
spark.hadoop.fs.adl.account.example2.oauth2.refresh.url https://login.microsoftonline.com/<directory-id-example2>/oauth2/token

W poniższym notesie pokazano, jak uzyskać bezpośredni dostęp do usługi Azure Data Lake Storage Gen1 i przy użyciu instalacji.

Notes jednostki usługi ADLS Gen1

Pobierz notes