Я хотел бы использовать свойство параллелизации spark для параллельного вычисления нескольких фреймов данных spark.
Что я делаю: foreach id из IDList (состоящего из более чем 100 000 элементов), я запрашиваю df (id) из базы данных и выполняю алгоритм на df.
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("scTest")
val sparkContext = new SparkContext(sparkConf)
val sparkSession = org.apache.spark.sql.SparkSession.builder
.appName("sparkSessionTest")
.getOrCreate
val IDList = List("ID1",...,"ID100000")
IDList.foreach(idString => {
val df = executeQuery(idString,sparkContext)
executeAlgorithm(df, sparkSession)
})
это работает, но этот метод выполняет процесс по одному идентификатору после одного.
Как распараллелить процесс, чтобы сделать его более эффективным?Одним из ограничений является то, что мне нужно sparkContext внутри executeQuery и sparSession в executeAlgorithm, и они не сериализуемы.Я запускаю это на кластере пряжи.
Спасибо заранее