Ваш запрос носит слишком общий характер. Однако я постараюсь связать это с одним из инцидентов, которые у меня были. Был похожий инцидент, который произошел со мной. Я могу поделиться подробностями своего исполнения, если это поможет.
Я запустил серию SQL-операторов Spark (с объединениями и фильтрами), и работа вообще не выполнялась. После тщательного анализа в веб-интерфейсе Spark я понял, что входные данные на одном из этапов работали в ГБ, где мои данные были слишком малы (менее 100 МБ).
Я проверил SQL-запросы и отладил их на уровне данных только для того, чтобы понять, что одна из JOINS вызывала проблему. Был картезианский союз, который формировался, из-за чего количество записей достигло миллионов. Это приводит к созданию данных во время выполнения из-за ошибочного условия соединения. Как только соединение было исправлено, проблема была решена.
Пожалуйста, проверьте ваш код. Вы можете получить больше идей. Spark сама по себе не будет создавать данные.
Я бы предложил использовать команду time , а также команду vmstat . Первый даст использование ЦП для выполнения исполняемого файла, а второй - периодический (т.е. раз в секунду) дамп ЦП / памяти / ввода-вывода системы.
Пример:
time dd if=/dev/zero bs=1K of=/dev/null count=1024000
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s
0.218u 0.519s 0:00.73 98.6% 0+0k 0+0io 0pf+0w <== that's time result