Spark-fase met hoge I/O

Bekijk vervolgens opnieuw de I/O-statistieken van de langste fase:

Langdurige fase I/O

Wat is hoge I/O?

Hoeveel gegevens moeten in een I/O-kolom staan om als hoog te worden beschouwd? Als u dit wilt weten, begint u eerst met het hoogste getal in een van de opgegeven kolommen. Houd vervolgens rekening met het totale aantal CPU-kernen dat u voor al onze werknemers hebt. Over het algemeen kan elke kern ongeveer 3 MB per seconde lezen en schrijven.

Deel uw grootste I/O-kolom door het aantal cores van de clusterwerkers, en deel dit vervolgens door de duur in seconden. Als het resultaat ongeveer 3 MB is, bent u waarschijnlijk I/O-gebonden. Dat zou een hoge I/O zijn.

Hoge invoer

Als u veel invoer in uw fase ziet, betekent dit dat u veel tijd besteedt aan het lezen van gegevens. Bepaal eerst welke gegevens deze fase leest. Zie Het identificeren van een kostbare leesbewerking in Spark's DAG.

Nadat u de specifieke gegevens hebt geïdentificeerd, zijn hier enkele manieren om uw leesbewerkingen te versnellen:

Hoge uitvoer

Als u veel uitvoer van uw fase ziet, betekent dit dat u veel tijd kwijt bent aan het schrijven van gegevens. Hier volgen enkele manieren om dit op te lossen:

Intensief schudden

Databricks raadt aan om spark.sql.shuffle.partitions=auto in te stellen zodat Spark het aantal optimale shuffle-partities automatisch kan kiezen. Als u niet bekend bent met shuffle, is dit het moment om te leren.

Geen hoge I/O

Als u geen hoge I/O in een van de kolommen ziet, moet u dieper graven. Zie de Slow Spark-fase met weinig I/O,.