Azure Databricks'de bulut nesne depolamayı bağlama
Önemli
Bağlamalar eski bir erişim desenidir. Databricks, tüm veri erişimini yönetmek için Unity Kataloğu'nu kullanmanızı önerir. Bkz . Unity Kataloğu'nu kullanarak bulut nesne depolamasına bağlanma.
Azure Databricks, kullanıcıların bulut kavramlarına aşina olmayan kullanıcılar için veri erişim desenlerini basitleştirmek için bulut nesne depolamasını Databricks Dosya Sistemi'ne (DBFS) bağlamasına olanak tanır. Bağlı veriler Unity Kataloğu ile çalışmaz ve Databricks bağlamaları kullanmaktan uzaklaşmayı ve bunun yerine Unity Kataloğu ile veri idaresini yönetmeyi önerir.
Azure Databricks bulut nesne depolamayı nasıl bağlar?
Azure Databricks bağlamaları, databricks dosya sistemine göre tanıdık dosya yollarını kullanarak bulut nesne depolamasıyla etkileşim kurmanızı sağlayan bir çalışma alanı ile bulut nesne depolama alanı arasında bir bağlantı oluşturur. Bağlamalar, aşağıdaki bilgileri depolayan dizinin altında /mnt
yerel bir diğer ad oluşturarak çalışır:
- Bulut nesne depolamasının konumu.
- Depolama hesabına veya kapsayıcısına bağlanmak için sürücü belirtimleri.
- Verilere erişmek için gereken güvenlik kimlik bilgileri.
Depolamayı bağlama söz dizimi nedir?
nesne source
depolamanın URI'sini belirtir (ve isteğe bağlı olarak güvenlik kimlik bilgilerini kodlayabilir). mount_point
dizinindeki /mnt
yerel yolu belirtir. Bazı nesne depolama kaynakları isteğe bağlı encryption_type
bir bağımsız değişkeni destekler. Bazı erişim desenleri için ek yapılandırma belirtimlerini öğesine sözlük extra_configs
olarak geçirebilirsiniz.
Not
Databricks, bağlamaya özgü Spark ve Hadoop yapılandırmasını kullanarak extra_configs
seçenekler olarak ayarlamanızı önerir. Bu, yapılandırmaların küme veya oturum yerine bağlamaya bağlı olmasını sağlar.
dbutils.fs.mount(
source: str,
mount_point: str,
encryption_type: Optional[str] = "",
extra_configs: Optional[dict[str:str]] = None
)
Hatalı yapılandırma çalışma alanınızdaki tüm kullanıcılara güvenli olmayan erişim sağlayabildiği için veri bağlamalarını yapılandırmadan veya değiştirmeden önce çalışma alanınıza ve bulut yöneticilerinize danışın.
Not
Bu makalede açıklanan yaklaşımlara ek olarak, Databricks Terraform sağlayıcısı ve databricks_mount ile demet bağlamayı otomatikleştirebilirsiniz.
Bağlama noktasını çıkarma
Bağlama noktasını sökmek için aşağıdaki komutu kullanın:
dbutils.fs.unmount("/mnt/<mount-name>")
Uyarı
Hataları önlemek için, bağlama noktasını hiçbir zaman diğer işler okurken veya yazarken değiştirmeyin. Bağlamayı değiştirdikten sonra, tüm bağlama güncelleştirmelerini yaymak için her zaman çalışan diğer tüm kümelerde komutunu çalıştırın dbutils.fs.refreshMounts()
. Bkz . refreshMounts komutu (dbutils.fs.refreshMounts).
ADLS 2. Nesil'i veya Blob Depolamayı ABFS ile bağlama
Kimlik doğrulaması için Microsoft Entra ID uygulama hizmet sorumlusu kullanarak azure depolama hesabına veri bağlayabilirsiniz. Daha fazla bilgi için bkz . Hizmet sorumlusu kullanarak depolamaya erişme & Microsoft Entra ID(Azure Active Directory).
Önemli
- Azure Databricks çalışma alanındaki tüm kullanıcıların bağlı ADLS 2. Nesil hesabına erişimi vardır. ADLS 2. Nesil hesabına erişmek için kullandığınız hizmet sorumlusuna yalnızca bu ADLS 2. Nesil hesabına erişim verilmelidir; diğer Azure kaynaklarına erişim verilmemelidir.
- Bir küme üzerinden bağlama noktası oluşturduğunuzda, küme kullanıcıları bağlama noktasına hemen erişebilir. Çalışan başka bir kümedeki bağlama noktasını kullanmak için, yeni oluşturulan bağlama noktasını kullanıma sunmak için söz konusu çalışan kümede
dbutils.fs.refreshMounts()
komutunu çalıştırmalısınız. - İşler çalışırken bağlama noktasının çıkarılması hatalara neden olabilir. Üretim işlerinin işleme kapsamında depolamanın çıkarılmadığından emin olun.
- Gizli dizileri kullanan bağlama noktaları otomatik olarak yenilenmez. Bağlı depolama, döndürülen, süresi dolan veya silinen bir gizli diziye dayanırsa, gibi
401 Unauthorized
hatalar oluşabilir. Böyle bir hatayı çözmek için depolamayı çıkarmanız ve yeniden bağlamanız gerekir. - ABFS uç noktasını kullanarak bir Azure Data Lake Storage 2. Nesil depolama hesabını başarıyla bağlamak için hiyerarşik ad alanının (HNS) etkinleştirilmesi gerekir.
Kimlik doğrulaması yapmak ve bağlama noktası oluşturmak için not defterinizde aşağıdakileri çalıştırın.
configs = {"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": "<application-id>",
"fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
"fs.azure.account.oauth2.client.endpoint": "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 = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
mount_point = "/mnt/<mount-name>",
extra_configs = configs)
val configs = Map(
"fs.azure.account.auth.type" -> "OAuth",
"fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id" -> "<application-id>",
"fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
"fs.azure.account.oauth2.client.endpoint" -> "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 = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
mountPoint = "/mnt/<mount-name>",
extraConfigs = configs)
Replace
<application-id>
Azure Active Directory uygulamasının Uygulama (istemci) kimliğiyle .<scope-name>
databricks gizli kapsam adıyla.<service-credential-key-name>
istemci gizli dizisini içeren anahtarın adıyla.<directory-id>
Azure Active Directory uygulamasının Dizin (kiracı) kimliğiyle .<container-name>
adls 2. Nesil depolama hesabındaki bir kapsayıcının adıyla.<storage-account-name>
adls 2. Nesil depolama hesabı adıyla.<mount-name>
dbfs'de hedeflenen bağlama noktasının adıyla.