Az Azure Data Lake Storage Gen1 elérése az Azure Databricksből

A Microsoft bejelentette az Azure Data Lake Storage Gen1 (korábbi nevén Azure Data Lake Store, más néven ADLS) tervezett kivonását, és javasolja, hogy minden felhasználó az Azure Data Lake Storage Gen2-be migráljon. A Databricks azt javasolja, hogy frissítsen az Azure Data Lake Storage Gen2-re a legjobb teljesítmény és az új funkciók érdekében.

Az Azure Data Lake Storage Gen1 kétféleképpen érhető el:

  1. Adja át a Microsoft Entra ID (korábbi nevén Azure Active Directory) hitelesítő adatait, más néven hitelesítő adatokat.
  2. Alkalmazáspéldány közvetlen használata.

Automatikus hozzáférés a Microsoft Entra-azonosító (korábbi nevén Azure Active Directory) hitelesítő adataival

Az Azure Databricks-fürtökről automatikusan hitelesítheti magát az Azure Data Lake Storage Gen1-ben ugyanazzal a Microsoft Entra-azonosítóval, amelyet az Azure Databricksbe való bejelentkezéshez használ. Ha engedélyezi a fürtöt a Microsoft Entra ID hitelesítő adatok átadásához, a fürtön futtatott parancsok anélkül olvashatják és írhatják az adatokat az Azure Data Lake Storage Gen1-ben, hogy a szolgáltatásnév hitelesítő adatait kellene konfigurálnia a tárolóhoz való hozzáféréshez.

A teljes beállítási és használati utasításokért lásd: Access Azure Data Lake Storage a Microsoft Entra ID (korábbi nevén Azure Active Directory) hitelesítő adatok átengedése (örökölt) használatával.

Szolgáltatásnév létrehozása és engedélyek megadása

Ha a kiválasztott hozzáférési módszerhez megfelelő engedélyekkel rendelkező szolgáltatásnév szükséges, és nem rendelkezik ilyennel, kövesse az alábbi lépéseket:

  1. Hozzon létre egy Microsoft Entra-azonosítót (korábbi nevén Azure Active Directory- alkalmazást) és szolgáltatásnevet, amely hozzáfér az erőforrásokhoz. Vegye figyelembe a következő tulajdonságokat:
    • application-id: Az ügyfélalkalmazást egyedileg azonosító azonosító.
    • directory-id: A Microsoft Entra ID-példányt egyedileg azonosító azonosító.
    • service-credential: Az alkalmazás identitásának igazolására használt sztring.
  2. Regisztrálja a szolgáltatásnevet, és adja meg a megfelelő szerepkör-hozzárendelést (például közreműködőt) az Azure Data Lake Storage Gen1-fiókban.

Közvetlen hozzáférés a Spark API-khoz szolgáltatásnév és OAuth 2.0 használatával

Az Azure Data Lake Storage Gen1-fiókjából való olvasáshoz konfigurálhatja a Sparkot a szolgáltatás hitelesítő adatainak használatára a jegyzetfüzetben az alábbi kódrészlettel:

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

ebben:

  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")Lekéri a titkos kulcs hatókörében titkos kódként tárolt tárfiók hozzáférési kulcsát.

A hitelesítő adatok beállítása után standard Spark- és Databricks API-k használatával érheti el az erőforrásokat. Példa:

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

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

Az Azure Data Lake Storage Gen1 címtárszintű hozzáférés-vezérlést biztosít, így a szolgáltatásnévnek hozzáféréssel kell rendelkeznie az olvasni kívánt könyvtárakhoz, valamint az Azure Data Lake Storage Gen1 erőforráshoz.

Hozzáférés metaadattáron keresztül

A metaadattárban megadott helyek eléréséhez adl:// Spark-beállításként meg kell adnia a Hadoop hitelesítőadat-konfigurációs beállításait a fürt létrehozásakor. Ehhez adja hozzá az spark.hadoop. előtagot a megfelelő Hadoop-konfigurációs kulcsokhoz, hogy propagálja őket a metaadattár által használt Hadoop-konfigurációkba:

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

Figyelmeztetés

  • Ezek a hitelesítő adatok a fürthöz hozzáférő összes felhasználó számára elérhetők.

Azure Data Lake Storage Gen1-erőforrás vagy mappa csatlakoztatása

Az 1. generációs Azure Data Lake Storage-erőforrás vagy mappa csatlakoztatásához használja a következő parancsot:

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)

ebben:

  • <mount-name> Egy DBFS-elérési út, amely azt jelzi, hogy az Azure Data Lake Storage Gen1-fiók vagy a benne lévő (a megadott source) mappa hol lesz csatlakoztatva a DBFS-ben.
  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")Lekéri a titkos kulcs hatókörében titkos kódként tárolt tárfiók hozzáférési kulcsát.

A tárolóban lévő fájlokat úgy érheti el, mintha helyi fájlok lennének, például:

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

Szolgáltatás hitelesítő adatainak beállítása több fiókhoz

A konfigurációs kulcsokhoz hozzáadva account.<account-name> több Azure Data Lake Storage Gen1-fiókhoz is beállíthat szolgáltatás hitelesítő adatokat egyetlen Spark-munkamenetben való használatra. Ha például hitelesítő adatokat szeretne beállítani mindkét fiókhoz a hozzáféréshez adl://example1.azuredatalakestore.net , és adl://example2.azuredatalakestore.netezt a következőképpen teheti meg:

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

Ez a fürt Spark-konfigurációja esetén is működik:

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

Az alábbi jegyzetfüzet bemutatja, hogyan érheti el közvetlenül és csatlakoztatással az Azure Data Lake Storage Gen1-et.

ADLS Gen1 egyszerű szolgáltatásjegyzetfüzet

Jegyzetfüzet beszerzése