Azure Databricks'ten Azure Data Lake Storage 1. Nesil erişme

Microsoft, Azure Data Lake Storage 1. Nesil'nin (eski adıyla ADLS) planlanan kullanımdan kaldırıldığını duyurdu ve tüm kullanıcıların Azure Data Lake Storage 2. Nesil geçişini önerir. Databricks, en iyi performans ve yeni özellikler için Azure Data Lake Storage 2. Nesil yükseltmenizi önerir.

Azure Data Lake Storage 1. Nesil erişmenin iki yolu vardır:

  1. Kimlik bilgisi geçişi olarak da bilinen Microsoft Entra Id (eski adıYla Azure Active Directory) kimlik bilgilerinizi geçirin.
  2. Doğrudan bir hizmet sorumlusu kullanın.

Microsoft Entra Id (eski adıYla Azure Active Directory) kimlik bilgilerinizle otomatik olarak erişim

Azure Databricks'te oturum açmak için kullandığınız Microsoft Entra Id kimliğini kullanarak Azure Databricks kümelerinden Azure Data Lake Storage 1. Nesil otomatik olarak kimlik doğrulaması yapabilirsiniz. Kümenizi Microsoft Entra Id kimlik bilgisi geçişi için etkinleştirdiğinizde, bu kümede çalıştırdığınız komutlar, depolamaya erişim için hizmet sorumlusu kimlik bilgilerini yapılandırmanıza gerek kalmadan Azure Data Lake Storage 1. Nesil verilerinizi okuyabilir ve yazabilir.

Tam kurulum ve kullanım yönergeleri için bkz. Microsoft Entra Id (eski adıYla Azure Active Directory) kimlik bilgisi geçişi (eski) kullanarak Azure Data Lake Depolama erişme.

Hizmet sorumlusu oluşturma ve bu sorumluya izin verme

Seçtiğiniz erişim yöntemi yeterli izinlere sahip bir hizmet sorumlusu gerektiriyorsa ve bir hizmet sorumlunuz yoksa şu adımları izleyin:

  1. Kaynaklara erişebilen bir Microsoft Entra Id (eski adıyla Azure Active Directory) uygulaması ve hizmet sorumlusu oluşturun. Aşağıdaki özelliklere dikkat edin:
    • application-id: İstemci uygulamasını benzersiz olarak tanımlayan bir kimlik.
    • directory-id: Microsoft Entra Id örneğini benzersiz olarak tanımlayan bir kimlik.
    • service-credential: Uygulamanın kimliğini kanıtlamak için kullandığı bir dize.
  2. Azure Data Lake Storage 1. Nesil hesabında Katkıda Bulunan gibi doğru rol atamasını sağlayarak hizmet sorumlusunu kaydedin.

Hizmet sorumlusu ve OAuth 2.0 kullanarak Spark API'leriyle doğrudan erişim

Azure Data Lake Storage 1. Nesil hesabınızdan okumak için Spark'ı, not defterinizde aşağıdaki kod parçacığıyla hizmet kimlik bilgilerini kullanacak şekilde yapılandırabilirsiniz:

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

burada:

  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")bir gizli dizi kapsamında gizlidizi olarak depolanan depolama hesabı erişim anahtarınızı alır.

Kimlik bilgilerinizi ayarladıktan sonra, kaynaklara erişmek için standart Spark ve Databricks API'lerini kullanabilirsiniz. Örneğin:

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 1. Nesil dizin düzeyinde erişim denetimi sağlar, bu nedenle hizmet sorumlusunun hem okumak istediğiniz dizinlere hem de Azure Data Lake Storage 1. Nesil kaynağına erişimi olmalıdır.

Meta veri deposu üzerinden erişim

Meta veri deposunda belirtilen konumlara erişmek adl:// için kümeyi oluştururken Hadoop kimlik bilgisi yapılandırma seçeneklerini Spark seçenekleri olarak belirtmeniz gerekir. Bu seçenekleri meta veri deposu tarafından kullanılan Hadoop yapılandırmalarına yaymak için ilgili Hadoop yapılandırma anahtarlarına ön ek olarak spark.hadoop. ekleyin:

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

Uyarı

  • Bu kimlik bilgileri, kümeye erişen tüm kullanıcılar tarafından kullanılabilir.

Azure Data Lake Storage 1. Nesil kaynağını veya klasörünü bağlama

Azure Data Lake Storage 1. Nesil kaynağını veya içindeki bir klasörü bağlamak için aşağıdaki komutu kullanın:

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)

burada:

  • <mount-name>, Azure Data Lake Storage 1. Nesil hesabının veya içindeki bir klasörün (içinde sourcebelirtilen) DBFS'ye bağlanacağı yeri temsil eden bir DBFS yoludur.
  • dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")bir gizli dizi kapsamında gizlidizi olarak depolanan depolama hesabı erişim anahtarınızı alır.

Kapsayıcınızdaki dosyalara yerel dosyalar gibi erişin, örneğin:

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

Birden çok hesap için hizmet kimlik bilgilerini ayarlama

Yapılandırma anahtarlarını ekleyerek account.<account-name> tek bir Spark oturumunda kullanılmak üzere birden çok Azure Data Lake Storage 1. Nesil hesabı için hizmet kimlik bilgilerini ayarlayabilirsiniz. Örneğin, hem hem hem de hesapların erişebileceği adl://example1.azuredatalakestore.netadl://example2.azuredatalakestore.netkimlik bilgilerini ayarlamak istiyorsanız, bunu aşağıdaki gibi yapabilirsiniz:

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

Bu, küme Spark yapılandırması için de çalışır:

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

Aşağıdaki not defteri, Azure Data Lake Storage 1. Nesil'a doğrudan ve bağlama ile erişmeyi gösterir.

ADLS 1. Nesil hizmet sorumlusu not defteri

Not defterini alma