ForeachRDD выполняется на драйвере?
Я пытаюсь обработать некоторые данные XML, полученные в очереди JMS (QPID), используя потоковую передачу Spark. После получения XML в качестве DStream я преобразую их в Dataframes, чтобы я мог соединить их с некоторыми из моих статических данных в виде уже загруженных Dataframes. Но согласно документации API для метода foreachRdd в DStream: он исполняется в драйвере, поэтому это означает, что вся логика обработки будет работать только в драйвере и не будет распространяться среди работников / исполнителей.
Документация по API
foreachRDD(func)
Наиболее общий оператор вывода, который применяет функцию func к каждому RDD, сгенерированному из потока. Эта функция должна передавать данные в каждом СДР во внешнюю систему, например сохранять СДР в файлы или записывать их по сети в базу данных. Обратите внимание, что функция func выполняется в процессе драйвера, выполняющем потоковое приложение, и обычно содержит действия RDD, которые вызывают вычисление потоковых RDD.