#python #apache-spark #pyspark
#python #apache-spark #pyspark
Вопрос:
Я отправляю несколько заданий Spark. В одном задании используется один рабочий. В настоящее время у меня одновременно отправлено 30 заданий, запущено 5 заданий и ожидают 25 заданий. Однако эта операция создает большую нагрузку на сервер. (Иногда порт задания не может быть назначен, и возникает ошибка.)
Возможно ли уменьшить нагрузку при одновременном запуске 5 штук?
В настоящее время мой работающий код::
~/spark-submit ~test1.py amp; ~/spark-submit ~test2.py amp; ~/spark-submit ~testN.py amp; ... ~/spark-submit ~test30.py
Ответ №1:
Я считаю, что с помощью и «amp;» вы используете их все одновременно.
Если вы поставите «;» вместо «amp;», и они не будут выполняться сразу, а дождитесь его завершения.
~/spark-submit ~test1.py ; ~/spark-submit ~test2.py ; ~/spark-submit ~testN.py ;
~/spark-submit ~test30.py;
Вы также можете объединить их и выполнить n из них параллельно, например:
~/spark-submit ~test1.py amp; ~/spark-submit ~test2.py ; ~/spark-submit ~testN.py amp;
~/spark-submit ~test30.py;
Однако это не лучший подход, а скорее быстрое решение.
Причина в том, что некоторые задания будут занимать больше времени, чем другие, и для их завершения потребуется больше времени.
Одним из решений было бы написать скрипт на python, в котором вы указываете пул заданий и запускаете 5 из них одновременно. Как только одно из них завершено, вы заменяете его другим из пула.
Комментарии:
1. Например, что я должен делать? Вы можете увидеть пример кода?