Краткий ответ - Нет, Spark не предоставляет API для рабочего узла (исполнителя) для взаимодействия с другими работниками. Я могу придумать несколько обходных путей (mapPartitions
+ некоторая координация ZK внутри), но это не то, для чего предназначен Spark, и не то, что вы просили.
Вы можете , очевидно, перераспределить ваши данные только на один раздел (repartition(1)
), то есть только на одного исполнителя, но вы должны убедиться, что данные достаточно малы, чтобы поместиться в один узел. Затем вы можете отправить результат обратно драйверу (collect
) и отправить его обратно в кластер. collect()
столь же «опасен», как и repartition(1)
- вы должны убедиться, что данные вписываются в ваш драйвер. В этом случае вы можете в первую очередь подумать о централизованном вычислении драйвера, если ваш процесс драйвера имеет достаточные ресурсы.