Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Job Insight é uma biblioteca de diagnóstico baseada em Java projetada para ajudá-lo a analisar interativamente aplicativos Spark concluídos no Microsoft Fabric. O Job insight permite obter informações mais detalhadas sobre os trabalhos do Spark recuperando dados de execução estruturados, como consultas, trabalhos, estágios, tarefas e executores em seus blocos de anotações do Fabric Spark usando o Scala.
Não importa se você está solucionando problemas de desempenho ou realizando diagnósticos personalizados, a biblioteca de insights de trabalho permite que você trabalhe com a telemetria do Spark como conjuntos de dados nativos do Spark, facilitando a solução de problemas de desempenho e a exploração de insights de execução.
Observação
O acesso à biblioteca de insights de trabalho usando o PySpark ainda não é suportado.
Pré-requisitos
Apenas o Scala é suportado.
Requer o Fabric Runtime 1.3 ou posterior (com o Spark 3.5+).
O PySpark não suporta o acesso à biblioteca do Job Insight.
Observação
Ao usar a biblioteca JobInsight para analisar outro Job Spark, o notebook que executa JobInsight deve estar na mesma capacidade Fabric que o Job Spark alvo.
Cenários de capacidade cruzada não são suportados atualmente.
Capacidades chave
Análise interativa do trabalho do Spark: acesse as métricas de execução do Spark, incluindo detalhes do trabalho, do estágio e do executor.
Métricas de execução persistentes: salve as métricas de execução de tarefas do Spark em tabelas lakehouse para geração de relatórios e integração.
Cópia de logs de eventos do Spark: exporte os logs de eventos para o OneLake ou o Azure Data Storage.
Exemplo de caderno
Você pode usar o bloco de anotações de exemplo fornecido (arquivo ipynb de exemplo) para começar. O caderno inclui:
- Exemplo
analyze()eloadJobInsight()código - Exibir comandos (por exemplo,
queries.show()) - Exemplos de cópias de logs de eventos.
Como Começar
1. Analise um trabalho Spark concluído
Extraia dados de execução estruturados de um trabalho concluído do Spark com a 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. Guarde métricas e logs num lakehouse
Salve a saída da análise em tabelas lakehouse para geração de relatórios ou integração:
val df = jobInsight.queries
df.write
.format("delta")
.mode("overwrite")
.saveAsTable("sparkdiagnostic_lh.Queries")
Aplique a mesma lógica a outros componentes, como trabalhos, estágios ou executores.
3. Recarregar a análise anterior
Se você já executou uma análise e salvou a saída, recarregue-a sem repetir o processo:
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. Copie os logs de eventos do spark
Copie os logs de eventos do Spark para um local ABFSS (como OneLake ou Azure Data Lake Storage (ADLS) Gen2) com esta API:
import com.microsoft.jobinsight.diagnostic.LogUtils
val contentLength = LogUtils.copyEventLog(
$workspaceId,
$artifactId,
$livyId,
$jobType,
$targetDirectory,
$asyncMode,
$attemptId
)
Melhores práticas
Verifique se você tem as permissões de leitura/gravação corretas para todos os caminhos ABFSS.
Salve
analyze()as saídas em um local durável para reutilização.Utilize
asyncMode = trueao copiar logs para grandes tarefas para reduzir a latência.Monitoramento do tamanho e da estrutura do log de eventos, para evitar problemas de desserialização.
Solução de problemas
| Questão | Resolução |
|---|---|
| Acesso de escrita negado | Verifique as permissões de gravação para o diretório ABFSS de destino. |
| stateStorePath já existe | Use um novo caminho que ainda não exista para cada chamada a ser analisada(). |