Problémy s pamětí Sparku
Ověření problému s pamětí
Problémy s pamětí často vedou k chybám, jako jsou například následující:
SparkException: Job aborted due to stage failure: Task 3 in stage 0.0 failed 4 times, most recent failure: Lost task 3.3 in stage 0.0 (TID 30) (10.139.64.114 executor 4): ExecutorLostFailure (executor 4 exited caused by one of the running tasks) Reason: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages.
Tyto chybové zprávy jsou ale často obecné a můžou být způsobeny jinými problémy. Pokud se tedy domníváte, že máte problém s pamětí, můžete problém ověřit tak, že zdvojnásobíte paměť na jádro a zjistíte, jestli to má vliv na váš problém.
Pokud máte například typ pracovního procesu se 4 jádry a 16 GB na paměť, můžete zkusit přepnout na typ pracovního procesu, který má 4 jádra a 32 GB paměti. To vám poskytne 8 GB na jádro ve srovnání se 4 GB na jádro, které jste měli dříve. Je to poměr jader k paměti, který tady záleží. Pokud trvá déle, než dojde k selhání s další pamětí nebo vůbec selžou, je to dobrý signál, že jste na správné cestě.
Pokud můžete problém vyřešit zvýšením paměti, skvělé! Možná je to řešení. Pokud se problém nevyřeší nebo nemůžete nést další náklady, měli byste se podívat hlouběji.
Možné příčiny
Existuje mnoho potenciálních důvodů problémů s pamětí:
- Příliš málo oddílů náhodného náhodného prohazu
- Velké vysílání
- Udf
- Funkce Window bez
PARTITION BY
příkazu - Zkosení
- Stav streamování