Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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()yloadJobInsight()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 = trueal 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(). |