Condividi tramite


I/O elevato della fase Spark

Esaminare quindi di nuovo le statistiche di I/O della fase più lunga:

I/O a stadio lungo

Che cos'è l'I/O elevato?

Quanti dati devono essere presenti in un I/O column per essere considerati elevati? Per capire questo problema, iniziare prima con il numero più alto in uno dei columnsspecificati. Considera quindi il numero totale di core della CPU che hai su tutti i nostri lavoratori. In genere ogni core può leggere e scrivere circa 3 MB al secondo.

Dividi il tuo I/O più grande column per il numero di core dei lavoratori del cluster, quindi dividi ulteriormente per i secondi di durata. Se il risultato è di circa 3 MB, allora probabilmente sei limitato dall'I/O. Sarebbe un I/O elevato.

Input elevato

Se viene visualizzato molto input nella fase, ciò significa che si spende molto tempo nell'analisi dei dati. Per prima cosa, identifica quali dati vengono letti da questa fase. Consulta Identificazione di una lettura costosa nel DAG di Spark.

Dopo aver identificato i dati specifici, ecco alcuni approcci per velocizzare le letture:

  • Usare Delta.
  • Prova Photon. Può essere di grande aiuto nella velocità di lettura, soprattutto per l'ampia tables.
  • Rendere la query più selettiva in modo che non sia necessario leggere così tanti dati.
  • Riconsiderare il layout dei dati affinché il salto dei dati sia più efficace.
  • Se si stanno leggendo più volte gli stessi dati, usare la cache delta .
  • Se si esegue un join, provare a get DFP.

Output elevato

Se si vede un sacco di output nella tua fase, significa che si sta impiegando molto tempo a scrivere dati. Ecco alcuni approcci per risolvere questo problema:

Shuffle elevato

Se non si ha familiarità con lo shuffle, è il momento di imparare.

Nessun I/O elevato

Se non viene visualizzato un I/O elevato in nessuno dei blocchi columns, è necessario approfondire. Vedi la fase di Spark lenta con poco I/O.