Delen via


Spark-fase hoge I/O

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

Lange 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 clusterwerkkernen en deel deze vervolgens door de seconden van de duur. 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 dure leesbewerking in Spark's DAG.

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

  • Gebruik Delta.
  • Probeer Photon. Het kan veel helpen met leessnelheid, met name voor brede tabellen.
  • Maak uw query selectiever zodat deze niet zoveel gegevens hoeft te lezen.
  • Bedenk de gegevensindeling zodat het overslaan van gegevens effectiever is.
  • Als u dezelfde gegevens meerdere keren leest, gebruikt u de Delta-cache.
  • Als u een join uitvoert, kunt u overwegen om DFP te laten werken.

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:

Hoge willekeurige volgorde

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 Slow Spark-fase met weinig I/O.