Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Auftragserblick ist eine javabasierte Diagnosebibliothek, die Ihnen bei der interaktiven Analyse abgeschlossener Spark-Anwendungen in Microsoft Fabric hilft. Mithilfe von Auftragserkenntnissen erhalten Sie tiefere Einblicke in Spark-Aufträge, indem Sie strukturierte Ausführungsdaten wie Abfragen, Aufträge, Phasen, Aufgaben und Executoren in Ihren Fabric Spark-Notizbüchern mithilfe von Scala abrufen.
Ganz gleich, ob Sie Leistungsprobleme beheben oder benutzerdefinierte Diagnosen durchführen, mit der Auftragserkenntnissebibliothek können Sie mit Spark-Telemetrie als systemeigene Spark-Datasets arbeiten, sodass Leistungsprobleme leichter behoben und Ausführungserkenntnisse untersucht werden können.
Hinweis
Der Zugriff auf die Auftragserblickbibliothek mit PySpark wird noch nicht unterstützt.
Voraussetzungen
Nur Scala wird unterstützt.
Erfordert Fabric Runtime 1.3 oder höher (mit Spark 3.5+).
PySpark unterstützt keinen Zugriff auf die Job Insight-Bibliothek.
Wichtige Funktionen
Interaktive Spark-Auftragsanalyse: Access Spark-Ausführungsmetriken, einschließlich Auftrags-, Phasen- und Executordetails.
Ausführungsmetriken speichern: Speichern Sie die Metriken der Spark-Job-Ausführung in Lakehouse-Tabellen für Berichterstellung und Integration.
Spark-Ereignisprotokollkopie: Exportieren von Ereignisprotokollen in OneLake oder Azure Data Storage.
Beispielnotizbuch
Sie können das bereitgestellte Beispielnotizbuch (Ipynb-Beispieldatei) verwenden, um zu beginnen. Das Notizbuch umfasst:
- Beispiel
analyze()undloadJobInsight()Code - Anzeigebefehle (z. B
queries.show(). ) - Beispiele zum Kopieren von Ereignisprotokollen.
Erste Schritte
1. Analysieren eines abgeschlossenen Spark-Auftrags
Extrahieren sie strukturierte Ausführungsdaten aus einem abgeschlossenen Spark-Auftrag mit der 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. Speichern von Metriken und Protokollen in einem Seehaus
Speichern Sie die Analyseausgabe in Lakehouse-Tabellen für die Berichterstellung oder Integration:
val df = jobInsight.queries
df.write
.format("delta")
.mode("overwrite")
.saveAsTable("sparkdiagnostic_lh.Queries")
Wenden Sie dieselbe Logik auf andere Komponenten wie Aufträge, Phasen oder Executoren an.
3. Vorherige Analyse erneut laden
Wenn Sie bereits eine Analyse ausgeführt und die Ausgabe gespeichert haben, laden Sie sie erneut, ohne den Vorgang zu wiederholen:
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. Kopieren von Spark-Ereignisprotokollen
Kopieren Sie Spark-Ereignisprotokolle mit dieser API an einen ABFSS-Speicherort (z. B. OneLake oder Azure Data Lake Storage (ADLS) Gen2:
import com.microsoft.jobinsight.diagnostic.LogUtils
val contentLength = LogUtils.copyEventLog(
$workspaceId,
$artifactId,
$livyId,
$jobType,
$targetDirectory,
$asyncMode,
$attemptId
)
Bewährte Methoden
Stellen Sie sicher, dass Sie über die richtigen Lese-/Schreibberechtigungen für alle ABFSS-Pfade verfügen.
Speichern Sie
analyze()Ausgaben an einem dauerhaften Speicherort für die Wiederverwendung.Wird
asyncMode = truebeim Kopieren von Protokollen für große Aufträge verwendet, um die Latenz zu reduzieren.Überwachen der Größe und Struktur des Ereignisprotokolls, um Deserialisierungsprobleme zu vermeiden.
Problembehandlung
| Thema | Beschluss |
|---|---|
| Schreibzugriff verweigert | Überprüfen Sie Schreibberechtigungen für das Ziel-ABFSS-Verzeichnis. |
| stateStorePath ist bereits vorhanden. | Verwenden Sie einen neuen Pfad, der für jeden Aufruf zur Analyse() noch nicht vorhanden ist. |