Partager via


Analyser les travaux Spark avec la bibliothèque Job Insight (préversion)

Job Insight est une bibliothèque de diagnostic basée sur Java conçue pour vous aider à analyser de manière interactive les applications Spark terminées dans Microsoft Fabric. L’insight des travaux vous permet d’obtenir des insights plus approfondis sur les travaux Spark en récupérant des données d’exécution structurées telles que des requêtes, des travaux, des étapes, des tâches et des exécuteurs au sein de vos notebooks Fabric Spark à l’aide de Scala.

Que vous résolvez les problèmes de performances ou effectuez des diagnostics personnalisés, la bibliothèque Job Insight vous permet d’utiliser des données de télémétrie Spark en tant que jeux de données Spark natifs, ce qui facilite la résolution des problèmes de performances et l’exploration des insights d’exécution.

Note

L’accès à la bibliothèque Job Insight à l’aide de PySpark n’est pas encore pris en charge.

Prerequisites

  • Seule Scala est prise en charge.

  • Nécessite Fabric Runtime 1.3 ou version ultérieure (avec Spark 3.5+).

  • PySpark ne prend pas en charge l’accès à la bibliothèque Job Insight.

Fonctionnalités clés

  • Analyse interactive des travaux Spark : accédez aux métriques d’exécution Spark, notamment les détails du travail, de l’étape et de l’exécuteur.

  • Conserver les métriques d’exécution : Enregistrez les métriques d’exécution du travail Spark dans les tables lakehouse pour la création de rapports et l’intégration.

  • Copie du journal des événements Spark : exportez les journaux des événements vers OneLake ou Stockage de données Azure.

Exemple de notebook

Vous pouvez utiliser l’exemple de notebook fourni (exemple de fichier ipynb) pour commencer. Le bloc-notes inclut :

  • Exemple analyze() et loadJobInsight() code
  • Commandes d’affichage (par exemple, queries.show())
  • Exemples de copie du journal des événements.

Mise en route

1. Analyser un travail Spark terminé

Extrayez des données d’exécution structurées à partir d’un travail Spark terminé avec l’API 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. Enregistrer les métriques et les journaux dans un lakehouse

Enregistrez la sortie d’analyse dans les tables lakehouse pour la création de rapports ou l’intégration :

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

Appliquez la même logique à d’autres composants tels que des travaux, des phases ou des exécuteurs.

3. Recharger l’analyse précédente

Si vous avez déjà exécuté une analyse et enregistré la sortie, rechargez-la sans répéter le processus :

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. Copier les journaux des événements Spark

Copiez les journaux des événements Spark vers un emplacement ABFSS (comme OneLake ou Azure Data Lake Storage (ADLS) Gen2) avec cette API :

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

Meilleures pratiques

Vérifiez que vous disposez des autorisations de lecture/écriture correctes pour tous les chemins ABFSS.

  • Enregistrez analyze() les sorties dans un emplacement durable à réutiliser.

  • Utilisez-la asyncMode = true lors de la copie des journaux d’activité pour les travaux volumineux afin de réduire la latence.

  • Surveillance de la taille et de la structure du journal des événements pour éviter les problèmes de désérialisation.

Résolution des problèmes

Problème Résolution
Accès en écriture refusé Vérifiez les autorisations d’écriture pour le répertoire ABFSS cible.
stateStorePath existe déjà Utilisez un nouveau chemin d’accès qui n’existe pas déjà pour chaque appel à analyser().