Kullanıcı kimlik bilgileriyle Spark oturum işlerini göndermek ve yürütmek için Livy API'sini kullanma

Şunlar için geçerlidir:✅ Fabric Veri Mühendisliği ve Veri Bilimi

Fabric Livy API, Fabric portalını kullanmadan uzak bir istemciden doğrudan Fabric Spark işlemine Spark toplu görev ve oturum görevleri göndermenizi sağlar. Bu makalede, bir göl evi oluşturuyor, Microsoft Entra tokenı ile kimlik doğrulaması yapıyor, Livy API uç noktasını keşfediyor ve bir Spark oturum işi gönderip izliyorsun.

Önkoşullar

REST API istemcisi seçme

Livy API'si ile curl gibi araçlar veya BIR HTTP kitaplığına sahip herhangi bir dil de dahil olmak üzere HTTP isteklerini destekleyen herhangi bir istemciden etkileşim kurabilirsiniz. Bu makaledeki örneklerde Jupyter Notebooks, PySpark ile Visual Studio Code ve Python için Microsoft Authentication Library (MSAL) kullanılır.

Livy API isteklerini yetkilendirme

Livy API'sini kullanmak için Microsoft Entra ID kullanarak isteklerinizin kimliğini doğrulamanız gerekir. Kullanılabilir iki yetkilendirme yöntemi vardır:

  • Entra SPN Belirteci (Hizmet Sorumlusu): Uygulama, istemci gizli dizisi veya sertifika gibi kimlik bilgilerini kullanarak kendi kimliğini doğrular. Bu yöntem, kullanıcı etkileşimi gerektirmediği otomatik işlemler ve arka plan hizmetleri için uygundur.

  • Entra uygulama belirteci (Temsilci): Uygulama, oturum açmış bir kullanıcı adına hareket eder. Uygulamanın kimliği doğrulanmış kullanıcının izinlerine sahip kaynaklara erişmesini istediğinizde bu yöntem uygundur.

Senaryonuza en uygun yetkilendirme yöntemini seçin ve aşağıdaki ilgili bölümü izleyin.

Livy API isteklerini Microsoft Entra SPN Belirteci ile yetkilendirme

Livy API'si de dahil olmak üzere Fabric API'lerle çalışmak için önce bir Microsoft Entra uygulaması oluşturmanız, gizli dizi oluşturmanız ve kodunuzda bu gizli diziyi kullanmanız gerekir. Uygulamanızın Fabric karşı API çağrıları gerçekleştirmek için yeterli şekilde kaydedilmesi ve yapılandırılması gerekir. Daha fazla bilgi için bkz. Microsoft Entra ID

  1. Uygulama kaydını oluşturduktan sonra bir istemci gizli anahtarı oluşturun.

    Microsoft Entra uygulama kaydını ve istemci sırrı eklemeyi gösteren ekran görüntüsü.

  2. İstemci sırrını oluştururken değeri kopyaladığınızdan emin olun. Kodda buna daha sonra ihtiyacınız olacak ve sır bir daha görülemez. Kodunuzda gizli anahtarın yanı sıra uygulama (istemci) kimliği ve dizin (kiracı kimliği) de gerekir.

  3. Ardından, hizmet sorumlusunu çalışma alanınıza ekleyin.

    Erişim seçeneklerini yönet Lakehouse ayarlarını gösteren ekran görüntüsü.

  4. Uygulama (istemci) kimliğini veya adını kullanarak Microsoft Entra uygulamasını arayın, çalışma alanına ekleyin ve hizmet sorumlusunun Katkıda Bulunan izinlerine sahip olduğundan emin olun.

    Yeni SPN hizmet sorumlusunu çalışma alanına eklemeyi gösteren ekran görüntüsü.

Livy API isteklerini Entra uygulama belirteci ile yetkilendirme

Livy API'si de dahil olmak üzere Fabric API'lerle çalışmak için önce bir Microsoft Entra uygulaması oluşturmanız ve belirteç almanız gerekir. Uygulamanızın Fabric karşı API çağrıları gerçekleştirmek için yeterli şekilde kaydedilmesi ve yapılandırılması gerekir. Daha fazla bilgi için bkz. Microsoft kimlik platformu ile bir uygulamayı kaydetme.

Livy API işlerini yürütmek için aşağıdaki Microsoft Entra kapsam izinleri gereklidir:

Microsoft Entra yönetim merkezinde Livy API izinlerini gösteren ekran görüntüsü.

Gerekli kapsamlar

Scope Açıklama
Lakehouse.Execute.All Fabric lakehouselerde işlemleri yürütün.
Lakehouse.Read.All Lakehouse meta verilerini okuyun.
Code.AccessFabric.All Fabric'e erişim tokenları almanızı sağlıyor. Tüm Livy API işlemleri için gereklidir.
Code.AccessStorage.All OneLake ve Azure depolama alanına erişim belirteçleri almaya izin verir. Lakehouse'larda veri okuma ve yazma işlemleri için gereklidir.

İsteğe bağlı Code.* kapsamları

Bu kapsamları yalnızca Spark işlerinizin çalışma zamanında ilgili Azure hizmetlerine erişmesi gerekiyorsa ekleyin.

Scope Açıklama Ne zaman kullanılır?
Code.AccessAzureKeyvault.All Azure Key Vault için erişim belirteçlerine erişim izni verir. Spark kodunuz Azure Key Vault'tan anahtarları, gizli bilgileri veya sertifikaları alır.
Code.AccessAzureDataLake.All 1. Nesil Azure Data Lake Storage erişim belirteçlerinin alınabilmesini sağlar. Spark kodunuz 1. Nesil Azure Data Lake Storage hesaplarından okur veya bu hesaplara yazar.
Code.AccessAzureDataExplorer.All Azure Veri Gezgini (Kusto) için erişim belirteçleri almaya izin verir. Spark kodunuz Azure Veri Gezgini kümelere veri sorgular veya veri alır.
Code.AccessSQL.All Azure SQL erişim belirteçlerinin alınabilmesini sağlar. Spark kodunuzun Azure SQL veritabanlarına bağlanması gerekir.

Uygulamanızı kaydederken hem Uygulama (istemci) kimliğine hem de Dizin (kiracı) kimliğine ihtiyacınız vardır.

Microsoft Entra yönetici merkezinde Livy API uygulaması genel görünümünü gösteren ekran görüntüsü.

Livy API çağrısını yapan kimliği doğrulanmış kullanıcının, hem API'nin hem de veri kaynağı öğelerinin bulunduğu çalışma alanında Katkıda Bulunan rolünde olması gerekir. Daha fazla bilgi için bkz. Kullanıcılara çalışma alanlarına erişim verme.

Livy API'sinin Code.* kapsamlarını anlama

Spark işleriniz Livy API aracılığıyla çalıştırıldığında kapsamlar, Code.* Spark Çalışma Zamanı'nın kimliği doğrulanmış kullanıcı adına hangi dış hizmetlere erişebileceğini denetler. İki gereklidir; geri kalanı, iş yükünüze bağlı olarak isteğe bağlıdır.

Gerekli Kod.* kapsamları

Scope Açıklama
Code.AccessFabric.All Fabric'e erişim tokenları almanızı sağlıyor. Tüm Livy API işlemleri için gereklidir.
Code.AccessStorage.All OneLake ve Azure depolama alanına erişim belirteçleri almaya izin verir. Lakehouse'larda veri okuma ve yazma işlemleri için gereklidir.

İsteğe bağlı Code.* kapsamları

Bu kapsamları yalnızca Spark işlerinizin çalışma zamanında ilgili Azure hizmetlerine erişmesi gerekiyorsa ekleyin.

Scope Açıklama Ne zaman kullanılır?
Code.AccessAzureKeyvault.All Azure Key Vault için erişim belirteçlerine erişim izni verir. Spark kodunuz Azure Key Vault'tan anahtarları, gizli bilgileri veya sertifikaları alır.
Code.AccessAzureDataLake.All 1. Nesil Azure Data Lake Storage erişim belirteçlerinin alınabilmesini sağlar. Spark kodunuz 1. Nesil Azure Data Lake Storage hesaplarından okur veya bu hesaplara yazar.
Code.AccessAzureDataExplorer.All Azure Veri Gezgini (Kusto) için erişim belirteçleri almaya izin verir. Spark kodunuz Azure Veri Gezgini kümelere veri sorgular veya veri alır.
Code.AccessSQL.All Azure SQL erişim belirteçlerinin alınabilmesini sağlar. Spark kodunuzun Azure SQL veritabanlarına bağlanması gerekir.

Notlar

Lakehouse.Execute.All ve Lakehouse.Read.All kapsamları da gereklidir ancak Code.* ailesinin bir parçası değildir. Bunlar, sırasıyla Fabric lakehouse'larda işlem yürütme ve meta verileri okuma izni verir.

Fabric Livy API uç noktasını bulma

Livy uç noktasına erişmek için bir göl evi öğesi gereklidir. Göl evi oluşturulduktan sonra, Livy API uç noktası ayarlar panelinde bulunabilir.

Lakehouse ayarlarında Livy API uç noktalarını gösteren ekran görüntüsü.

Livy API'sinin uç noktası şu deseni izler:

https://api.fabric.microsoft.com/v1/workspaces/><ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/

URL, seçtiğinize bağlı olarak <oturumlar> veya <toplu işlemler> ile eklenir.

Livy API Swagger dosyalarını indirme

Livy API'sinin tam swagger dosyalarına buradan ulaşabilirsiniz.

Yüksek eşzamanlılık oturumları

Yüksek eşzamanlılık (HC) desteği, istemcilerin yüksek eşzamanlılık oturumları olarak adlandırılan birden çok bağımsız yürütme bağlamı almasına olanak tanıyarak eşzamanlı Spark yürütmesine olanak tanır.

Her HC oturumu, Spark REPL (Okuma-Değerlendir-Yazdır Döngüsü) ile eşleşen mantıksal bir yürütme bağlamını temsil eder. Farklı HC oturumları altında gönderilen Spark deyimleri eşzamanlı olarak yürütülebilir.

Bu, aşağıdakileri sağlar:

  • HC oturumları arasında paralel yürütme
  • Tahmin edilebilir kaynak kullanımı
  • Eşzamanlı istekler arasında yalıtım
  • İstek başına yeni oturum oluşturmaya kıyasla daha düşük ek yük

Tüm istekler için tek bir oturum kullanılması, komutların sırayla yürütülmesine neden olur. Her istek için yeni bir oturum oluşturmak gereksiz ek yüke ve kaynak az kullanımına neden oldu.

Notlar

HC oturumu alımı idempotent değildir. Aynı sessionTag ile yapılan birden çok alma isteği, aynı temel Livy oturumu tarafından yedeklenmiş olsa bile, farklı HC oturum kimlikleri döndürür.

Örnek kod içeren adım adım izlenecek yol için bkz. Fabric Yüksek Eşzamanlılık Oturumları için Livy API'sini kullanmaya başlama. Kavramsal genel bakış için Fabric Livy API Hızlı eşzamanlılık desteği bölümüne bakın.

Livy API işlerini gönderin

Livy API'sinin kurulumu tamamlandıktan sonra toplu iş veya oturum işlerini göndermeyi seçebilirsiniz.

Fabric Ortamları ile Entegrasyon

Varsayılan olarak, bu Livy API oturumu çalışma alanı için varsayılan başlangıç havuzunda çalışır. Alternatif olarak, Fabric Environments Create, konfigürasyon ve Fabric'teki bir ortamı kullanarak Livy API oturumunun bu Spark işleri için kullandığı Spark havuzunu özelleştirebilirsiniz.

Livy Spark oturumunda Fabric Ortamı kullanmak için json dosyasını bu yükü içerecek şekilde güncelleştirin.

create_livy_session = requests.post(livy_base_url, headers = headers, json={
    "conf" : {
        "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
    }
)

Livy Spark toplu oturumunda Fabric Ortamı kullanmak için json yükünü burada gösterildiği gibi güncelleştirin:

payload_data = {
"name":"livybatchdemo_with"+ newlakehouseName,
"file":"abfss://YourABFSPathToYourPayload.py", 
"conf": {
    "spark.targetLakehouse": "Fabric_LakehouseID",
    "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID"\"}"  # Replace "EnvironmentID" with your environment ID, or remove this line to use starter pools instead of an environment
    }
}

İstek geçmişini nasıl izlersiniz

Önceki Livy API gönderimlerinizi görmek ve tüm gönderim hatalarında hata ayıklamak için İzleme Merkezi'ni kullanabilirsiniz.

İzleme hub'ında önceki Livy API gönderimlerini gösteren ekran görüntüsü.