İş İçgörü Kitaplığı ile Spark İşlerini Analiz Etme (Önizleme)

İş içgörüleri, Microsoft Fabric'te tamamlanmış Spark uygulamalarını etkileşimli olarak çözümlemenize yardımcı olmak için tasarlanmış Java tabanlı bir tanılama kitaplığıdır. İş içgörüleri, Scala kullanarak Doku Spark not defterlerinizdeki sorgular, işler, aşamalar, görevler ve yürütücüler gibi yapılandırılmış yürütme verilerini alarak Spark işleri hakkında daha derin içgörüler elde etmenizi sağlar.

performans sorunlarını giderirken veya özel tanılamalar yürütürken, İş içgörü kitaplığı Spark telemetrisiyle yerel Spark Veri Kümeleri olarak çalışmanıza olanak sağlayarak performans sorunlarını gidermeyi ve yürütme içgörülerini keşfetmeyi kolaylaştırır.

Uyarı

PySpark kullanarak İş içgörü kitaplığına erişim henüz desteklenmiyor.

Önkoşullar

  • Yalnızca Scala desteklenir.

  • Fabric Çalışma Zamanı 1.3 veya daha yenisini gerektirir (Spark 3.5+ ile).

  • PySpark, İş İçgörüleri kitaplığına erişimi desteklemez.

Uyarı

Başka bir Spark uygulamasını analiz etmek için JobInsight kitaplığını kullanırken, JobInsight'i çalıştıran defterin, hedef Spark uygulamasıyla aynı Doku kapasitesinde olması gerekir.

Kapasiteler arası senaryolar şu anda desteklenmemektedir.

Önemli özellikler

  • Etkileşimli Spark iş analizi: İş, aşama ve yürütücü ayrıntıları da dahil olmak üzere Spark yürütme ölçümlerine erişin.

  • Yürütme ölçümlerini kalıcı hale getirin: Spark iş yürütme ölçümlerini raporlama ve tümleştirme için lakehouse tablolarına kaydedin.

  • Spark olay günlüğü kopyası: Olay günlüklerini OneLake'e veya Azure Veri Depolama'ya aktarın.

Örnek not defteri

Başlamak için sağlanan örnek not defterini (örnek ipynb dosyası) kullanabilirsiniz. Not defteri şunları içerir:

  • Örnek analyze() ve loadJobInsight() kod
  • Görüntüleme komutları (örneğin, queries.show())
  • Olay günlüğü kopyalama örnekleri.

Başlangıç Yapmak

1. Tamamlanmış bir Spark işini analiz etme

API ile tamamlanmış bir Spark işinden yapılandırılmış yürütme verilerini ayıklayın analyze :

import com.microsoft.jobinsight.diagnostic.SparkDiagnostic
val jobInsight = SparkDiagnostic.analyze( 
    $workspaceId, 
    $artifactId, 
    $livyId, 
    $jobType, 
    $stateStorePath, 
     $attemptId 
) 
val queries = jobInsight.queries 
val jobs = jobInsight.jobs 
val stages = jobInsight.stages 
val tasks = jobInsight.tasks 
val executors = jobInsight.executors 

2. Ölçümleri ve günlükleri bir göle kaydetme

Raporlama veya tümleştirme için analiz çıkışını lakehouse tablolarına kaydedin:

val df = jobInsight.queries 
df.write 
.format("delta") 
.mode("overwrite") 
.saveAsTable("sparkdiagnostic_lh.Queries") 

aynı mantığı işler, aşamalar veya yürütücüler gibi diğer bileşenlere de uygulayın.

3. Önceki analizi yeniden yükleme

Zaten bir çözümleme çalıştırdıysanız ve çıkışı kaydettiyseniz işlemi tekrarlamadan yeniden yükleyin:

import com.microsoft.jobinsight.diagnostic.SparkDiagnostic 
val jobInsight = SparkDiagnostic.loadJobInsight( 
    $stateStorePath 
) 
val queries = jobInsight.queries 
val jobs = jobInsight.jobs 
val stages = jobInsight.stages 
val tasks = jobInsight.tasks 
val executors = jobInsight.executors

4. Spark olay günlüklerini kopyalama

Spark olay günlüklerini şu API ile bir ABFSS konumuna (OneLake veya Azure Data Lake Storage (ADLS) 2. Nesil gibi) kopyalayın:

import com.microsoft.jobinsight.diagnostic.LogUtils 
val contentLength = LogUtils.copyEventLog( 
    $workspaceId, 
    $artifactId, 
    $livyId, 
    $jobType, 
    $targetDirectory, 
    $asyncMode, 
    $attemptId 
)

En iyi yöntemler

Tüm ABFSS yolları için doğru okuma/yazma izinlerine sahip olduğunuzdan emin olun.

  • analyze() çıktıları yeniden kullanmak üzere dayanıklı bir konuma kaydedin.

  • Gecikme süresini azaltmak için büyük işlerin günlüklerini kopyalarken kullanın asyncMode = true .

  • Seri durumdan çıkarma sorunlarını önlemek için olay günlüğü boyutunu ve yapısını izleme.

Sorun giderme

Sorun Çözüm
Yazma erişimi reddedildi Hedef ABFSS dizini için yazma izinlerini denetleyin.
stateStorePath zaten var Analyze() çağrısı için henüz mevcut olmayan yeni bir yol kullanın.