Compartir a través de


Análisis de trabajos de Spark con la biblioteca de conclusiones de trabajos (versión preliminar)

Job Insight es una biblioteca de diagnóstico basada en Java diseñada para ayudarle a analizar interactivamente las aplicaciones Spark completadas en Microsoft Fabric. La información de trabajos le permite obtener información más detallada sobre los trabajos de Spark mediante la recuperación de datos de ejecución estructurados, como consultas, trabajos, fases, tareas y ejecutores dentro de los cuadernos de Fabric Spark mediante Scala.

Tanto si está solucionando problemas de rendimiento como si realiza diagnósticos personalizados, la biblioteca de conclusiones de trabajos le permite trabajar con la telemetría de Spark como conjuntos de datos de Spark nativos, lo que facilita la solución de problemas de rendimiento y la exploración de conclusiones de ejecución.

Nota:

Todavía no se admite el acceso a la biblioteca de conclusiones de trabajos mediante PySpark.

Prerrequisitos

  • Solo se admite Scala.

  • Requiere Fabric Runtime 1.3 o posterior (con Spark 3.5 o posterior).

  • PySpark no admite el acceso a la biblioteca de Job Insight.

Funcionalidades clave

  • Análisis interactivo de trabajos de Spark: acceda a las métricas de ejecución de Spark, incluidos los detalles del trabajo, la fase y el ejecutor.

  • Conservar las métricas de ejecución: guarde las métricas de ejecución de trabajos de Spark en tablas de lakehouse para la creación de informes y la integración.

  • Copia del registro de eventos de Spark: exporte registros de eventos a OneLake o Azure Data Storage.

Cuaderno de ejemplo

Puede usar el cuaderno de ejemplo proporcionado (archivo ipynb de ejemplo) para empezar. El cuaderno incluye:

  • Ejemplo analyze() y loadJobInsight() código
  • Mostrar comandos (por ejemplo, queries.show())
  • Ejemplos de copia del registro de eventos.

Cómo empezar

1. Análisis de un trabajo de Spark completado

Extraiga datos de ejecución estructurados de un trabajo de Spark completado con la 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. Guardar métricas y registros en una instancia de LakeHouse

Guarde la salida del análisis en tablas de Lakehouse para la creación de informes o la integración:

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

Aplique la misma lógica a otros componentes, como trabajos, fases o ejecutores.

3. Volver a cargar el análisis anterior

Si ya ha ejecutado un análisis y guardado la salida, vuelva a cargarla sin repetir el proceso:

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. Copia de registros de eventos de Spark

Copie los registros de eventos de Spark en una ubicación de ABFSS (como OneLake o Azure Data Lake Storage (ADLS) Gen2 con esta API:

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

procedimientos recomendados

Asegúrese de que tiene los permisos de lectura y escritura correctos para todas las rutas de acceso de ABFSS.

  • Guarde analyze() las salidas en una ubicación duradera para su reutilización.

  • Use asyncMode = true al copiar registros para trabajos de gran tamaño para reducir la latencia.

  • Supervisar el tamaño y la estructura del registro de eventos para evitar problemas de deserialización.

Solución de problemas

Cuestión Resolución
Acceso de escritura denegado Compruebe los permisos de escritura del directorio ABFSS de destino.
stateStorePath ya existe Use una nueva ruta de acceso que aún no exista para cada llamada a analyze().