Diagnosi di un lungo processo in Spark

Quando un job rappresenta la maggior parte del tempo di esecuzione di un carico di lavoro, il tempo è solitamente concentrato in una o in alcune delle fasi di quel lavoro. Trovare la fase più lunga e leggere il suo I/O e il numero di compiti restringe il problema a una causa specifica come spill, skew, alto I/O o troppo poco parallelismo.

Usa questa pagina dopo che la timeline dei lavori mostra uno o pochi lavori lunghi, oppure dopo aver ordinato i lavori per durata e aperto quello più lungo. Se la timeline mostra un pattern diverso, consulta la pagina per quel pattern:

Trova la fase più lunga

Iniziare identificando la fase più lunga del processo. Scorri fino all'elenco delle fasi in fondo alla pagina del processo e ordinale per durata:

fase lunga

Dettagli di I/O dello stadio

Rivedi i dati I/O di alto livello per questa fase utilizzando le colonne Input, Output, Shuffle Read e Shuffle Write :

I/O di lunga fase

Ogni colonna mostra:

  • Input: Quanti dati questo stadio ha letto dall'archiviazione, come file Delta Lake, Parquet o CSV.
  • Output: Quanti dati sono stati scritti nello storage in questa fase, ad esempio file Delta Lake, Parquet o CSV.
  • Dati di shuffle letti: Quantità di dati di shuffle letti in questa fase.
  • Scrittura casuale: Quantità di dati casuali scritti in questa fase.

Annota questi numeri per i passaggi successivi.

Numero di attività

Il numero di attività nella fase lunga può aiutare a identificarne la causa. Lo screenshot seguente mostra dove trovare il numero di attività:

Determinare il numero di attività

Un singolo compito significa che lo stage si attiva senza parallelismo, quindi solo un core fa il lavoro mentre il resto del cluster aspetta. Se lo stage ha un solo compito, vedi Long Spark stage with one task.

Visualizzare altri dettagli della fase

Se la fase prevede più di un compito, indaga ulteriormente. Clicca sul link nella descrizione della fase per vedere i dettagli sulla fase più lunga:

Informazioni sul Palco Aperto

Successivamente, vedi Skew and spill.