Share via


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 depolamaya Bağlan.

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_configsolarak geçirebilirsiniz.

Not

Databricks, bağlamaya özgü Spark ve Hadoop yapılandırmasını kullanarak extra_configsseç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 veya Blob Depolama ABFS ile bağlama

Kimlik doğrulaması için Microsoft Entra Id (eski adıYla Azure Active Directory) uygulama hizmeti sorumlusunu 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 Unauthorizedhatalar 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.