Zdieľať cez


Analýza úloh Spark pomocou knižnice Job Insight (Preview)

Job insight je diagnostická knižnica založená na jazyku Java, ktorá vám pomôže interaktívne analyzovať dokončené aplikácie Spark v Microsoft Fabric. Prehľad úloh umožňuje získať hlbší prehľad o úlohách Sparku načítaním štruktúrovaných údajov o vykonávaní, ako sú dotazy, úlohy, fázy, úlohy a vykonávacie moduly v rámci poznámkových blokov Fabric Spark pomocou Scala.

Či už riešite problémy s výkonom alebo vykonávate vlastnú diagnostiku, knižnica prehľadov úloh vám umožňuje pracovať s telemetriou Sparku ako natívnymi množinami údajov Spark, čo uľahčuje riešenie problémov s výkonom a skúmanie prehľadov vykonávania.

Poznámka

Prístup ku knižnici Job Insight pomocou PySparku zatiaľ nie je podporovaný.

Požiadavky

  • Podporovaná je iba Scala.

  • Vyžaduje sa modul Fabric Runtime 1.3 alebo novší (so Sparkom 3.5+).

  • PySpark nepodporuje prístup ku knižnici Job Insight.

Kľúčové možnosti

  • Interaktívna analýza úloh Sparku: Získajte prístup k metrikám vykonávania Sparku vrátane podrobností o úlohe, fáze a vykonávateľovi.

  • Zachovanie metrík vykonávania: Uložte metriky vykonávania úloh Sparku do tabuliek Lakehouse na vytváranie zostáv a integráciu.

  • Kópia denníka udalostí Sparku: Exportujte denníky udalostí do OneLake alebo Azure Data Storage.

Známe obmedzenie

V súčasnosti knižnica nepodporuje spracovanie veľkých denníkov udalostí, ako sú reťazce nad 20 MB alebo hlboko vnorené štruktúry.

Vzorový poznámkový blok

Na začiatok môžete použiť poskytnutý vzorový poznámkový blok (vzorový súbor ipynb). Zápisník obsahuje:

  • Ukážka analyze() a loadJobInsight() kód
  • Príkazy na zobrazenie (napríklad, queries.show())
  • Príklady kopírovania denníka udalostí.

Začíname

1. Analýza dokončenej úlohy Spark

Extrahujte štruktúrované údaje o vykonávaní z dokončenej úlohy Sparku pomocou rozhrania analyze API:

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. Uložte metriky a protokoly do jazera

Uložte výstup analýzy do tabuliek Lakehouse na vytváranie zostáv alebo integráciu:

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

Rovnakú logiku použite na ďalšie súčasti, ako sú úlohy, fázy alebo vykonávacie programy.

3. Znova načítajte predchádzajúcu analýzu

Ak ste už spustili analýzu a uložili výstup, znova ho načítajte bez opakovania procesu:

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. Kopírovanie denníkov udalostí Spark

Skopírujte denníky udalostí Spark do umiestnenia ABFSS (napríklad OneLake alebo Azure Data Lake Storage (ADLS) Gen2) pomocou tohto rozhrania API:

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

Osvedčené postupy

Uistite sa, že máte správne povolenia na čítanie/zápis pre všetky cesty ABFSS.

  • Uložte analyze() výstupy na trvalé miesto na opätovné použitie.

  • Používa sa asyncMode = true pri kopírovaní denníkov pre veľké úlohy na zníženie latencie.

  • Monitorovanie veľkosti a štruktúry denníka udalostí, aby sa predišlo problémom s deserializáciou.

Riešenie problémov

Vydať Povinné
Prístup na zápis je odmietnutý Skontrolujte povolenia na zápis pre cieľový adresár ABFSS.
stateStorePath už existuje Použite novú cestu, ktorá ešte neexistuje pre každé volanie na analýzu().