Azure Data Lake Storage 2. Nesil ve Blob Depolama'ya bağlanma

Not

Bu makalede, Azure Data Lake Storage 2. Nesil erişimi yapılandırmaya yönelik eski desenler açıklanmaktadır. Databricks, dosyalar ile doğrudan etkileşim için Azure Data Lake Storage 2. Nesil ve birimlere erişimi yapılandırmak için Unity Kataloğu'nu kullanmanızı önerir. Bkz. Unity Kataloğu'nu kullanarak bulut nesne depolamaya Bağlan.

Bu makalede Azure Databricks'ten Azure Data Lake Storage 2. Nesil ve Blob Depolama nasıl bağlandığınız açıklanmaktadır.

Not

Azure kimlik bilgilerini kullanarak Azure Data Lake Storage 2. Nesil veya Blob Depolama Bağlan

Azure Data Lake Storage 2. Nesil veya Blob Depolama erişmek için aşağıdaki kimlik bilgileri kullanılabilir:

  • Microsoft Entra ID hizmet sorumlusuyla OAuth 2.0: Databricks, Azure depolamaya bağlanmak için Microsoft Entra ID hizmet sorumlularının kullanılmasını önerir. Bir Microsoft Entra ID hizmet sorumlusu oluşturmak ve Azure depolama hesaplarına erişim sağlamak için bkz . Hizmet ilkesi kullanarak depolamaya erişme ve Microsoft Entra Kimliği (Azure Active Directory).

    Bir Microsoft Entra ID hizmet sorumlusu oluşturmak için, Microsoft Entra ID'de (eski adıYla Azure Active Directory) rolüne veya Application.ReadWrite.All iznine sahip Application Administrator olmanız gerekir. Bir depolama hesabında rol atamak için depolama hesabında bir Sahip veya Kullanıcı Erişimi Yöneticisi Azure RBAC rolüne sahip bir kullanıcı olmanız gerekir.

  • Paylaşılan erişim imzaları (SAS):Azure depolamaya erişmek için depolama SAS belirteçlerini kullanabilirsiniz. SAS ile, ayrıntılı erişim denetimine sahip geçici belirteçleri kullanarak depolama hesabına erişimi kısıtlayabilirsiniz.

    Sas belirteci izinlerini yalnızca depolama hesabı, kapsayıcı veya dosya üzerinde kendiniz vekleyebilirsiniz.

  • Hesap anahtarları: Azure Depolama erişimini yönetmek için depolama hesabı erişim anahtarlarını kullanabilirsiniz. Depolama hesap erişim anahtarları hem depolama hesabının yapılandırmasına hem de verilere tam erişim sağlar. Databricks, hesap anahtarları yerine Azure depolamaya bağlanmak için Microsoft Entra ID hizmet sorumlusu veya SAS belirteci kullanılmasını önerir.

    Bir hesabın erişim anahtarlarını görüntülemek için depolama hesabında Sahip, Katkıda Bulunan veya Depolama Hesap Anahtarı İşleci Hizmeti rolüne sahip olmanız gerekir.

Databricks, tüm kimlik bilgilerini depolamak için gizli dizi kapsamlarının kullanılmasını önerir. Çalışma alanınızdaki kullanıcılara, hizmet sorumlularına ve gruplara gizli dizi kapsamını okumaları için erişim verebilirsiniz. Bu, kullanıcıların Azure depolamaya erişmesine izin verirken Azure kimlik bilgilerini korur. Gizli dizi kapsamı oluşturmak için bkz . Gizli dizi kapsamları.

Azure kimlik bilgilerini Azure depolamaya erişecek şekilde yapılandırmak için Spark özelliklerini ayarlama

Azure depolamaya erişmek için Bir Azure kimlik bilgilerini yapılandırmak için Spark özelliklerini ayarlayabilirsiniz. Kimlik bilgilerinin kapsamı bir küme veya not defteri olarak ayarlanabilir. Azure depolamaya erişimi korumak için hem küme erişim denetimini hem de not defteri erişim denetimini birlikte kullanın. Bkz . İşlem izinleri ve Databricks not defterlerini kullanarak işbirliği yapma.

Not

Microsoft Entra ID hizmet sorumluları bir SQL ambarından Azure depolamaya erişmek için de kullanılabilir. Bkz . Veri erişimi yapılandırmasını etkinleştirme.

Spark özelliklerini ayarlamak için, kümenin Spark yapılandırmasında veya not defterinde aşağıdaki kod parçacığını kullanın:

Azure hizmet sorumlusu

Küme Spark yapılandırmasını ayarlamak için aşağıdaki biçimi kullanın:

spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token

Aşağıdaki örnekte gösterildiği gibi not defterlerinde kullanabilirsiniz spark.conf.set :

service_credential = dbutils.secrets.get(scope="<secret-scope>",key="<service-credential-key>")

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")

Replace

  • <secret-scope> databricks gizli kapsam adıyla.
  • <service-credential-key> istemci gizli dizisini içeren anahtarın adıyla.
  • <storage-account> azure depolama hesabının adıyla birlikte.
  • <application-id>Microsoft Entra ID uygulamasının Uygulama (istemci) kimliğiyle.
  • <directory-id> Microsoft Entra Id uygulamasının Dizin (kiracı) kimliğiyle .

Sas belirteçleri

Aynı Spark oturumunda birden çok depolama hesabı için SAS belirteçleri yapılandırabilirsiniz.

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))

Replace

  • <storage-account>azure Depolama hesap adıyla.
  • <scope> azure databricks gizli kapsam adıyla.
  • <sas-token-key> azure depolama SAS belirtecini içeren anahtarın adıyla.

Hesap anahtarı

spark.conf.set(
    "fs.azure.account.key.<storage-account>.dfs.core.windows.net",
    dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))

Replace

  • <storage-account>azure Depolama hesap adıyla.
  • <scope> azure databricks gizli kapsam adıyla.
  • <storage-account-access-key> azure depolama hesabı erişim anahtarını içeren anahtarın adıyla.

Azure depolamaya erişme

Azure depolama kapsayıcınıza erişmek için kimlik bilgilerini düzgün yapılandırdıktan sonra, URI'leri kullanarak depolama hesabındaki kaynaklarla etkileşim kurabilirsiniz. Databricks, daha fazla güvenlik için sürücüyü kullanmanızı abfss önerir.

spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")

dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
CREATE TABLE <database-name>.<table-name>;

COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');

Örnek not defteri

Microsoft Entra Id (eski adıYla Azure Active Directory) hizmet sorumluları not defteriyle ADLS 2. Nesil OAuth 2.0

Not defterini alma

bilinen sorunları Azure Data Lake Storage 2. Nesil

Azure portalı aracılığıyla oluşturulan bir depolama kapsayıcısını kullanmayı denerseniz aşağıdaki hatayı alabilirsiniz:

StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.

Hiyerarşik ad alanı etkinleştirildiğinde, Azure portalı üzerinden kapsayıcı oluşturmanız gerekmez. Bu sorunu görürseniz Azure portalı aracılığıyla Blob kapsayıcısını silin. Birkaç dakika sonra kapsayıcıya erişebilirsiniz. Alternatif olarak, bu kapsayıcı Azure portalı üzerinden oluşturulmadığı sürece URI'nizi abfss farklı bir kapsayıcı kullanacak şekilde değiştirebilirsiniz.

Microsoft belgelerinde Azure Data Lake Storage 2. Nesil ile ilgili bilinen sorunlar bölümüne bakın.

Azure Databricks'ten verileri depolamak ve verilere erişmek için kullanım dışı bırakılan desenler

Aşağıdakiler kullanım dışı bırakılmış depolama desenleridir: