Sdílet prostřednictvím


Vysoká vstup/výstupní etapa Sparku

Dále se znovu podívejte na vstupně-výstupní statistiky nejdelší fáze:

Vstup/Výstup Dlouhá fáze

Co je vysoký I/O?

Kolik dat musí být ve sloupci V/V, aby se považovalo za vysoké? Pokud to chcete zjistit, začněte nejprve nejvyšším číslem v libovolném z daných sloupců. Pak zvažte celkový počet jader procesoru, které máte u všech našich pracovníků. Obecně platí, že každé jádro může číst a zapisovat přibližně 3 MB za sekundu.

Vydělte svůj největší V/V sloupec počtem pracovních jader clusteru, poté výsledek vydělte dobou trvání v sekundách. Pokud je výsledek kolem 3 MB, jste pravděpodobně omezeni vstupně-výstupními operacemi. To by byla vysoká vstupně-výstupní propustnost.

Vysoký vstup

Pokud do vaší fáze přichází velké množství vstupních dat, znamená to, že trávíte spoustu času jejich zpracováním. Nejprve určete, jaká data tato fáze čte. Viz Identifikace nákladného čtení v DAG Sparku.

Jakmile identifikujete konkrétní data, tady je několik přístupů k urychlení čtení:

Vysoký výkon

Pokud uvidíte hodně výstupu ze své fáze, znamená to, že věnujete hodně času zápisu dat. Tady je několik přístupů k řešení tohoto:

Vysoké míchání

Databricks doporučuje nastavit spark.sql.shuffle.partitions=auto , aby Spark vybral automaticky počet optimálních oddílů náhodného prohazování. Pokud nejste obeznámeni se zamícháním, je čas se naučit.

Žádné vysoké I/O

Pokud v žádném ze sloupců nevidíte vysoké vstupně-výstupní operace, musíte se podívat hlouběji. Vizte fázi Slow Spark s malými vstupně-výstupními operacemi.