Přístup k Azure Data Lake Storage Gen1 z Azure Databricks

Společnost Microsoft oznámila plánované vyřazení Služby Azure Data Lake Storage Gen1 (dříve Azure Data Lake Store označované také jako ADLS) a doporučuje všem uživatelům migrovat do Azure Data Lake Storage Gen2. Databricks doporučuje upgradovat na Azure Data Lake Storage Gen2 pro zajištění nejlepšího výkonu a nových funkcí.

Existují dva způsoby přístupu ke službě Azure Data Lake Storage Gen1:

  1. Předejte své přihlašovací údaje Microsoft Entra ID (dříve Azure Active Directory), označované také jako předávání přihlašovacích údajů.
  2. Přímé použití instančního objektu

Přístup automaticky pomocí přihlašovacích údajů Microsoft Entra ID (dříve Azure Active Directory)

Automatické ověření ve službě Azure Data Lake Storage Gen1 z clusterů Azure Databricks pomocí stejné identity ID Microsoft Entra, kterou používáte pro přihlášení k Azure Databricks. Když povolíte cluster pro předávání přihlašovacích údajů Microsoft Entra ID, příkazy, které v daném clusteru spustíte, budou moct číst a zapisovat data v Azure Data Lake Storage Gen1, aniž byste museli nakonfigurovat přihlašovací údaje instančního objektu pro přístup k úložišti.

Úplné pokyny k nastavení a použití najdete v tématu Přístup ke službě Azure Data Lake Storage pomocí předávání přihlašovacích údajů Microsoft Entra ID (dříve Azure Active Directory) (starší verze).

Vytvoření a udělení oprávnění instančnímu objektu

Pokud vybraná metoda přístupu vyžaduje instanční objekt s odpovídajícími oprávněními a nemáte ho, postupujte takto:

  1. Vytvořte aplikaci Microsoft Entra ID (dříve Azure Active Directory) a instanční objekt, který má přístup k prostředkům. Všimněte si následujících vlastností:
    • application-id: ID, které jednoznačně identifikuje klientskou aplikaci.
    • directory-id: ID, které jednoznačně identifikuje instanci Microsoft Entra ID.
    • service-credential: Řetězec, který aplikace používá k prokázání své identity.
  2. Zaregistrujte instanční objekt a udělte správné přiřazení role, jako je přispěvatel, na účtu Azure Data Lake Storage Gen1.

Přímý přístup pomocí rozhraní Spark API pomocí instančního objektu a OAuth 2.0

Pokud chcete číst z účtu Azure Data Lake Storage Gen1, můžete Spark nakonfigurovat tak, aby používal přihlašovací údaje služby s následujícím fragmentem kódu v poznámkovém bloku:

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

kde

  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")načte přístupový klíč účtu úložiště, který je uložený jako tajný klíč v oboru tajných kódů.

Po nastavení přihlašovacích údajů můžete pro přístup k prostředkům použít standardní rozhraní API Sparku a Databricks. Příklad:

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

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

Azure Data Lake Storage Gen1 poskytuje řízení přístupu na úrovni adresáře, takže instanční objekt musí mít přístup k adresářům, ze kterých chcete číst, a také k prostředku Azure Data Lake Storage Gen1.

Přístup prostřednictvím metastoru

Pokud chcete získat přístup k adl:// umístěním zadaným v metastoru, musíte při vytváření clusteru zadat možnosti konfigurace přihlašovacích údajů Hadoop jako možnosti Sparku přidáním spark.hadoop. předpony do odpovídajících konfiguračních klíčů Hadoop, aby se rozšířily do konfigurací Hadoopu používaných metastorem:

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

Upozorňující

  • Tyto přihlašovací údaje jsou k dispozici všem uživatelům, kteří přistupují ke clusteru.

Připojení prostředku nebo složky Azure Data Lake Storage Gen1

Pokud chcete připojit prostředek Azure Data Lake Storage Gen1 nebo do ní složku, použijte následující příkaz:

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)

kde

  • <mount-name> je cesta DBFS, která představuje, kde se účet Azure Data Lake Storage Gen1 nebo složka v něm (zadaná) sourcepřipojí v DBFS.
  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")načte přístupový klíč účtu úložiště, který je uložený jako tajný klíč v oboru tajných kódů.

Přístup k souborům v kontejneru, jako by se jednalo o místní soubory, například:

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

Nastavení přihlašovacích údajů služby pro více účtů

Přihlašovací údaje služby pro více účtů Azure Data Lake Storage Gen1 pro použití v rámci jedné relace Sparku můžete nastavit přidáním account.<account-name> ke konfiguračním klíčům. Pokud například chcete nastavit přihlašovací údaje pro přístup adl://example1.azuredatalakestore.net k účtům, adl://example2.azuredatalakestore.neta můžete to udělat takto:

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

Funguje to také pro konfiguraci Sparku clusteru:

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

Následující poznámkový blok ukazuje, jak přistupovat k Azure Data Lake Storage Gen1 přímo a s připojením.

Poznámkový blok instančního objektu ADLS Gen1

Získat poznámkový blok