Изменение настроек Spark сессии
SyncMaster Worker(рабочий процесс) создает SparkSession для каждого запуска.
По умолчанию, SparkSession создается с параметрами master=local, всеми необходимыми .jar пакетами для конкретных типов БД/Файловых систем и ограничителем по ресурсам передачи данных.
Пользовательская настройка сессии Spark
Возможно изменить базовые Spark Session configuration_ настройки воркера:
worker:
spark_session_default_config:
spark.master: local
spark.driver.host: 127.0.0.1
spark.driver.bindAddress: 0.0.0.0
spark.sql.pyspark.jvmStacktrace.enabled: true
spark.ui.enabled: false
Например, для использования SyncMaster в Spark-on-K8s можно использовать образ рабочего процесса для контейнеров исполнителей Spark:
worker:
spark_session_default_config:
spark.master: k8s://https://kubernetes.default.svc
spark.driver.host: service-for-spark-driver
spark.driver.bindAddress: 0.0.0.0
spark.driver.port: 10000
spark.blockManager.port: 10001
spark.kubernetes.authenticate.driver.serviceAccountName: spark
spark.sql.pyspark.jvmStacktrace.enabled: true
spark.kubernetes.container.image: mtsrus/syncmaster-worker:{TAG}
Note
В настоящее время Spark-on-K8s и Spark-on-Yarn не поддерживают взаимодействие по протоколам FTP, FTPS, SFTP, Samba и WebDAV.
Для этого требуется sparm.master: local.
Фабрика пользовательских сессий Spark
Также можно использовать пользовательскую функцию, которая возвращает объект SparkSession:
worker:
create_spark_session_function: my_worker.spark.create_custom_spark_session
Вот пример функции:
from syncmaster.db.models import Run
from syncmaster.dto.connections import ConnectionDTO
from syncmaster.worker.settings import WorkerSettings
from pyspark.sql import SparkSession
def create_custom_spark_session(
run: Run,
source: ConnectionDTO,
target: ConnectionDTO,
settings: WorkerSettings,
) -> SparkSession:
# any custom code returning SparkSession object
return SparkSession.builde.config(...).getOrCreate()
Модуль с пользовательской функцией следует размещать в том же образе Docker или виртуальной среде Python, что и рабочий процесс SyncMaster.