Конфигурируемые параметры кластера при запуске приложения

Параметр Описание Значение по умолчанию
spark.app.name Имя приложения Spark. Отображается в интерфейсах мониторинга и логах.  
spark.executor.memory Объем памяти, выделяемый каждому executor'у. 30g
spark.executor.cores Количество ядер CPU для каждого executor'а. 20
spark.num.executors Количество executor'ов, запускаемых для приложения.  
spark.sql.shuffle.partitions Число разделов по умолчанию, используемое при перемешивании данных для объединений или агрегаций. Примечание: Для структурированной потоковой передачи эта конфигурация не может быть изменена между перезапусками запросов из одного и того же места контрольной точки. 200
spark.default.parallelism Число разделов по умолчанию в RDD, возвращаемых такими преобразованиями, как join, reduceByKey и parallelize, если оно не задано пользователем. количество ядер в кластере
spark.files Файлы, которые нужно отправить на все узлы кластера.  
spark.jars Дополнительные JAR-файлы, необходимые приложению.  
spark.log.level Уровень логирования Spark. При установке переопределяет любые пользовательские настройки логирования, как если бы был вызван SparkContext.setLogLevel() при запуске. Допустимые значения: "ALL", "DEBUG", "ERROR", "FATAL", "INFO", "OFF", "TRACE", "WARN".  
spark.jars.packages Список Maven-координат JAR-файлов через запятую, которые будут добавлены в classpath драйвера и executor'ов. Формат: groupId:artifactId:version.  
spark.jars.excludes Список groupId:artifactId через запятую, которые необходимо исключить при разрешении зависимостей из spark.jars.packages во избежание конфликтов.  
spark.jars.repositories Список дополнительных удалённых репозиториев через запятую для поиска Maven-координат, указанных в --packages или spark.jars.packages.  
spark.archives Список архивов через запятую, которые будут распакованы в рабочую директорию каждого executor'а. Поддерживаются .jar, .tar.gz, .tgz и .zip. Можно указать имя директории для распаковки через #, например, file.zip#directory. Экспериментальная опция.  

Примечания

  • Значения параметров могут быть заданы через командную строку при запуске (--conf spark.executor.memory=4g).
  • Для подробного списка всех параметров и их значений рекомендуется обращаться к официальной документации Apache Spark.

Примеры использования

spark-submit \
  --conf spark.app.name="MyApp" \
  --conf spark.executor.memory=4g \
  --conf spark.executor.cores=2 \
  --conf spark.sql.shuffle.partitions=200 \
  my_script.py

Скрипт spark-runner.sh (только для работы с Python)

Для вычислений на CPU+GPU (по умолчанию):

spark-runner.sh pi.py 100

Под капотом у скрипта будет выполнятся следующая команда:

spark-submit --archives env.tar.gz#env pi.py 100

Для вычислений только на CPU (--cpu, -c):

spark-runner.sh -c pi.py 100

Что выполнит:

spark-submit --archives env.tar.gz#env \
--conf spark.plugins="" --conf spark.rapids.sql.enabled=false \
--conf spark.executor.resource.gpu.amount=0 \
--conf spark.task.resource.gpu.amount=0 test.py 100

Прочие флаги:

  • --time, -t — замеряет время выполнения команды в терминале;
  • --dry-run, -d — выводит команду без запуска;
  • --verbose, -v — расширенный вывод для отладки.

Плагины

Помимо подключения через Maven, можно подключать локальные плагины из папки /opt/spark-plugins/.

RAPIDS Accelerator For Apache Spark

--jars /opt/spark-plugins/rapids-4-spark_2.13-25.08.0.jar
Текущая локальная версия
Версия Аpache Spark Версия RAPIDS Accelerator
4.0.0 Scala 2.13, v25.08.0

PostgreSQL JDBC

--driver-class-path /opt/spark-plugins/postgresql-42.7.7.jar --jars /opt/spark-plugins/postgresql-42.7.7.jar
Текущая локальная версия
Версия Java Версия JDBC драйвера
8 42.7.5
8 42.7.6
8 42.7.7