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:
- Kimlik bilgisi geçişi olarak da bilinen Microsoft Entra Id (eski adıYla Azure Active Directory) kimlik bilgilerinizi geçirin.
- 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:
- 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.
- 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çindesource
belirtilen) 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.net
adl://example2.azuredatalakestore.net
kimlik 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.