Я приведу пример использования следующего кода для разграничения между драйвером и исполнителем,
object test{
def main(args:Array[String]){
log.info("This is driver")
val sparkSession = ???
spark.read
...
.map(x=>{
...
log.info("This is executor")
...
})
log.info("This is driver")
}
}
Как вы можете видеть, что что-нибудь между map
/ foreach
и другими преобразованиями/ действия выполняются для исполнителей, все остальное выполняется для драйвера.
Надеюсь, это прояснится.