У меня есть REST API в Scala Spray, который запускает задания Spark следующим образом:
path("vectorize") {
get {
parameter('apiKey.as[String]) { (apiKey) =>
if (apiKey == API_KEY) {
MoviesVectorizer.calculate() // Spark Job run in a Thread (returns Future)
complete("Ok")
} else {
complete("Wrong API KEY")
}
}
}
}
Я пытаюсь найти способ указать память драйвера Spark для заданий. Как я обнаружил, настройка driver.memory из кода приложения ни на что не влияет.
Целое веб-приложение вместе со Spark упаковано в толстую банку.
Я запускаю это, запустив
java -jar app.jar
Таким образом, как я понимаю, spark-submit здесь не актуален (или это так?). Поэтому я не могу указать опцию --driver-memory при запуске приложения.
Есть ли способ установить память драйвера для Spark в веб-приложении?
Вот моя текущая конфигурация Spark:
val spark: SparkSession = SparkSession.builder()
.appName("Recommender")
.master("local[*]")
.config("spark.mongodb.input.uri", uri)
.config("spark.mongodb.output.uri", uri)
.config("spark.mongodb.keep_alive_ms", "100000")
.getOrCreate()
spark.conf.set("spark.executor.memory", "10g")
val sc = spark.sparkContext
sc.setCheckpointDir("/tmp/checkpoint/")
val sqlContext = spark.sqlContext
Как сказано в документации, вкладка Spark UI Environment отображает только переменные, на которые влияет конфигурация. Все, что я установил, там - кроме spark.executor.memory.