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 depolamasına ve hizmetlerine bağlanma.
Bu makalede Azure Databricks'ten Azure Data Lake Storage 2. Nesil ve Blob Depolama'ya nasıl bağlandığınız açıklanmaktadır.
Not
- Eski Windows Azure Depolama Blobu sürücüsü (WASB) kullanım dışı bırakıldı. ABFS'nin WASB'ye göre çok sayıda avantajı vardır. ABFS ile ilgili Azure belgelerine bakın. Eski WASB sürücüsüyle çalışma belgeleri için bkz. WASB (eski) ile Azure Blob Depolama bağlanma.
- Azure, Azure Data Lake Storage 1. Nesil'nin kullanımdan kaldırıldığını duyurdu. Azure Databricks, azure Data Lake Storage 1. Nesil tüm verilerin Azure Data Lake Storage 2. Nesil geçirilmesini önerir. Henüz geçirmediyseniz bkz. Azure Databricks'ten Azure Data Lake Storage 1. Nesil erişme.
Azure kimlik bilgilerini kullanarak Azure Data Lake Storage 2. Nesil veya Blob Depolama'ya bağlanma
Azure Data Lake Storage 2. Nesil veya Blob Depolama'ya erişmek için aşağıdaki kimlik bilgileri kullanılabilir:
Microsoft Entra ID hizmet sorumlusuyla OAuth 2.0: Databricks, Azure Data Lake Storage 2. Nesil bağlanmak için Microsoft Entra ID hizmet sorumlularının kullanılmasını önerir. Microsoft Entra ID hizmet sorumlusu oluşturmak ve Azure depolama hesaplarına erişim sağlamak için bkz . Hizmet sorumlusu kullanarak depolamaya erişme ve Microsoft Entra Kimliği (Azure Active Directory).
Microsoft Entra Id hizmet sorumlusu oluşturmak için, Microsoft Entra Id'de rolüne
Application Administrator
veya iznineApplication.ReadWrite.All
sahip 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.Önemli
Blob depolama, Microsoft Entra ID hizmet sorumlularını desteklemez.
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'ya erişimi yönetmek için depolama hesabı erişim anahtarlarını kullanabilirsiniz. Depolama hesabı 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 Hesabı Anahtar Operatörü 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 hesabı 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 hesabı 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
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:
Databricks artık dış veri konumlarının Databricks Dosya Sistemine bağlanmasını önermemektedir. Bkz. Azure Databricks'te bulut nesnesi depolamayı bağlama.
Databricks artık Azure Data Lake Storage 2. Nesil ile kimlik bilgisi geçişi kullanılmasını önermez. Bkz . Microsoft Entra Id kimlik bilgisi geçişini (eski) kullanarak Azure Data Lake Storage'a erişme.