Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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 do log de eventos do Spark: exporte logs de eventos para o OneLake ou o Armazenamento de Dados do Azure.
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ópia do log 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. Salve métricas e logs em uma casa de lago
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.Use
asyncMode = trueao copiar logs para trabalhos grandes 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 gravação 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(). |