OneLake'i Azure Databricks ile tümleştirme

Bu makalede, Azure Databricks sunucusuz işlem aracılığıyla OneLake'e bağlanma adımları gösterilmektedir.

Ö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.
  • Veritabanı sırlarını veya Azure Key Vault (AKV) kullanarak sırları depolamak ve almak. Bu örnekte Databricks gizli bilgiler kullanılır.

Databricks sunucusuz işlem kullanarak OneLake'e bağlanma

Databricks sunucusuz işlem kullanarak, bir küme sağlamadan iş yüklerini çalıştırabilirsiniz. Databricks sunucusuz belgelerine göre, Sunucusuz işlemde Spark yapılandırmasını otomatikleştirmek için Databricks sunucusuz yalnızca desteklenen Spark özelliklerinin bir alt kümesini yapılandırmaya izin verir.

Uyarı

Bu sınırlama Azure Databricks için benzersiz değildir. Amazon Web Services (AWS) ve Google Cloud'daki Databricks sunucusuz uygulamaları da aynı davranışı sergiler.

Databricks sunucusuz işlemle bağlantılı bir not defterinde desteklenmeyen spark yapılandırmasını değiştirmeye veya ayarlamaya çalışırsanız, sistem CONFIG_NOT_AVAILABLE hatası döndürür.

Bir kullanıcı sunucusuz işlemde desteklenmeyen Spark yapılandırmasını değiştirmeye çalışırsa hata iletisini gösteren ekran görüntüsü.

OneLake, Databricks sunucusuz hesaplamadan gelen bağlantıyı destekler. Uygun erişiminiz varsa ve Databricks sunucusuz işlem ile OneLake arasında bir ağ yolu varsa Databricks sunucusuz işlemden OneLake'e bağlanabilirsiniz. Databricks sunucusuz ile kodunuzun desteklenmeyen Spark özelliklerini değiştirmediğinden emin olun.

Dijital defterinizi oluşturun

  1. Databricks çalışma alanında bir not defteri oluşturun ve bunu sunucusuz işlem alanına ekleyin.

    Databricks not defterini sunucusuz işlemle bağlamayı gösteren ekran görüntüsü.

  2. Python modüllerini içeri aktarma - Bu örnekte üç modül kullanın:

    • msal , Microsoft Authentication Library (MSAL) olarak tasarlanmıştır ve geliştiricilerin Microsoft kimlik platformu kimlik doğrulamasını uygulamalarıyla tümleştirmesine yardımcı olmak için tasarlanmıştır.
    • requests modülü, Python kullanarak HTTP isteklerinde bulunmak için kullanılır.
    • delta lake , Python kullanarak Delta Lake tablolarını okumak ve yazmak için kullanılır.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Uygulama kimliği de dahil olmak üzere Microsoft Entra kiracısı için değişkenleri bildirin. Microsoft Fabric'in konuşlandırıldığı kiracının tenant ID'sini 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>")
    
  4. 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>"
    storage_account_name = workspace_id
    onelake_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/{table_to_read}"
    
  5. 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:
       access_token = result["access_token"]
       print("Access token acquired.")
       token_val = result['access_token']
    
  6. OneLake'den delta tablosu okuma

    dt = DeltaTable(onelake_uri, storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"})
    df = dt.to_pandas()
    print(df.head())
    

    Uyarı

    Hizmet sorumlusu Katkıda Bulunan çalışma alanı rol atamasına sahiptir ve bunu verileri OneLake'e geri yazmak için kullanabilirsiniz.

Önceki adımları tamamladıktan sonra Databricks'i sunucusuz işlemle bağlı bir not defteri kullanarak OneLake'ten veri okuyabilirsiniz.