Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Databricks'dan
- Standart veya iş kümesi: Verileri doğrudan Spark DataFrames aracılığıyla okumak ve yazmak için Spark ABFS sürücüsünü OAuth yapılandırmasıyla kullanın.
-
Sunucusuz işlem: Sunucusuz çalışma zamanları özel Spark yapılandırma özelliklerini ayarlamanıza izin vermez. Bunun yerine, Delta tablolarının kimliğini doğrulamak ve okumak veya yazmak için Microsoft Authentication Library (MSAL) ve Python
deltalakekitaplığını kullanın.
İlgili Databricks tümleştirme senaryoları için aşağıdaki kaynaklara bakın:
| Scenario | Dokümantasyon |
|---|---|
| OneLake verilerini kopyalamadan Unity Kataloğu'ndan sorgulama | OneLake katalog federasyonunu etkinleştirme |
| Fabric'dan Databricks Unity Kataloğu verilerine erişme | Azure Databricks Unity Kataloğunu Yansıtma |
Önkoşullar
Bağlanmadan önce şunları yaptığınızdan emin olun:
- Fabric çalışma alanı ve Lakehouse.
- Premium bir Azure Databricks çalışma alanı.
- En azından Katkıda Bulunan çalışma alanı rol ataması olan bir hizmet sorumlusu.
- Databricks sırlarını veya Azure Key Vault (AKV) sırlarını depolamak ve almak için. Bu makaledeki örneklerde Databricks gizli bilgiler kullanılır.
Standart kümeyle OneLake'e bağlanma
Doğru OneLake ABFS yol biçimini kullanma
Aşağıdaki URI biçimlerinden birini kullanın:
abfss://<workspace_id_or_name>@onelake.dfs.fabric.microsoft.com/<lakehouse_id_or_name>.lakehouse/Files/<path>abfss://<workspace_id_or_name>@onelake.dfs.fabric.microsoft.com/<lakehouse_id_or_name>.lakehouse/Tables/<path>
Kimlikleri veya adları kullanabilirsiniz. Ad kullanıyorsanız, çalışma alanı ve göl evi adlarında özel karakterlerden ve boşluklardan kaçının.
Hizmet sorumlusu kimlik doğrulamayı kullanma
Otomatikleştirilmiş işler ve merkezi gizli dizi döndürme için bu seçeneği kullanın.
workspace_name = "<workspace_name>"
lakehouse_name = "<lakehouse_name>"
tenant_id = dbutils.secrets.get(scope="<scope-name>", key="<tenant-id-key>")
service_principal_id = dbutils.secrets.get(scope="<scope-name>", key="<client-id-key>")
service_principal_secret = dbutils.secrets.get(scope="<scope-name>", key="<client-secret-key>")
spark.conf.set("fs.azure.account.auth.type", "OAuth")
spark.conf.set(
"fs.azure.account.oauth.provider.type",
"org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
)
spark.conf.set("fs.azure.account.oauth2.client.id", service_principal_id)
spark.conf.set("fs.azure.account.oauth2.client.secret", service_principal_secret)
spark.conf.set(
"fs.azure.account.oauth2.client.endpoint",
f"https://login.microsoftonline.com/{tenant_id}/oauth2/token",
)
# Read
df = spark.read.format("parquet").load(
f"abfss://{workspace_name}@onelake.dfs.fabric.microsoft.com/{lakehouse_name}.lakehouse/Files/data"
)
df.show(10)
# Write
df.write.format("delta").mode("overwrite").save(
f"abfss://{workspace_name}@onelake.dfs.fabric.microsoft.com/{lakehouse_name}.lakehouse/Tables/dbx_delta_spn"
)
Sunucusuz işlem ile OneLake'e bağlanma
Databricks sunucusuz işlem , bir küme sağlamadan iş yüklerini çalıştırmanıza olanak tanır, ancak yalnızca desteklenen Spark özelliklerinin bir alt kümesine izin verir. Standart kümelerde kullanılan Spark yapılandırmasını ayarlayamazsınız fs.azure.* .
Uyarı
Bu sınırlama Azure Databricks için benzersiz değildir. Amazon Web Services (AWS) ve Google Cloud'daki Databricks sunucusuz uygulamaları aynı davranışa sahiptir.
Sunucusuz bir not defterinde desteklenmeyen bir Spark yapılandırması ayarlamaya çalışırsanız sistem CONFIG_NOT_AVAILABLE hatası döndürür.
Bunun yerine, OAuth belirtecini almak için MSAL'yi ve bu belirteçle Delta tablolarını okumak veya yazmak için Python deltalake kitaplığını kullanın.
Sunucusuz not defteri ayarlama
Databricks çalışma alanınızda bir not defteri oluşturun ve bunu sunucusuz işlem alanına ekleyin.
Python modüllerini içeri aktar. Bu örnekte iki modül kullanın:
- msal Microsoft kimlik platformu kimlik doğrulaması yapar.
- deltalake Delta Lake tablolarını Python okur ve yazar.
from msal import ConfidentialClientApplication from deltalake import DeltaTable, write_deltalakeUygulama kimliği de dahil olmak üzere Microsoft Entra kiracısı için değişkenleri bildirin. Fabric'in dağıtıldığı kiracının kiracı kimliğini kullanın.
# Fetch from Databricks secrets. tenant_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for tenant_id>") client_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for client_id>") client_secret = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for secret>")Fabric çalışma alanı değişkenlerini bildirin.
workspace_id = "<replace with workspace name>" lakehouse_id = "<replace with lakehouse name>" table_to_read = "<name of lakehouse table to read>" onelake_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/{table_to_read}"Token elde etmek için istemciyi başlatın.
authority = f"https://login.microsoftonline.com/{tenant_id}" app = ConfidentialClientApplication( client_id, authority=authority, client_credential=client_secret ) result = app.acquire_token_for_client(scopes=["https://onelake.fabric.microsoft.com/.default"]) if "access_token" in result: print("Access token acquired.") token_val = result['access_token'] else: raise Exception(f"Failed to acquire token: {result.get('error_description', result)}")OneLake'den bir Delta tablosu okuyun.
dt = DeltaTable(onelake_uri, storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"}) df = dt.to_pandas() print(df.head())OneLake'e bir Delta tablosu yazın.
target_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/<target_table_name>" write_deltalake( target_uri, df, mode="overwrite", storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"} )
Tasarımla ilgili dikkat edilecek noktalar
- Mümkün olduğunda tablo yolu başına bir yazıcı deseni kullanın. Birden çok işlem altyapısından veya çalışma zamanı sürümünden aynı depolama yollarına yazmak çakışmalara neden olabilir.
- Hizmet sorumlusu kimlik bilgileri için gizlilik yönetimini kullanın.
- Verileri başka bir göl evi konumuna fiziksel olarak yazmak yerine sanallaştırılmış erişime ihtiyacınız olduğunda OneLake kısayollarını kullanın.
- OneLake'e açık ağ erişimini sınırlamak için, Databricks erişim bağlayıcınızın kaynak kimliğini çalışma alanının Kaynak Örneği Kuralları'na ekleyin, böylece OneLake her istekte yönetilen kimliğini doğrulayabilsin.
İlgili içerik
OneLake'i Azure Databricks - Azure Databricks'te bulut nesne depolamayı bağlama