Spark forEach против функций карты - PullRequest
0 голосов
/ 14 марта 2019

Я собирался через обзор, и было указано:

forEach принудительно отправляет все данные в один процесс (драйвер) что вызовет проблемы (такие как проблемы OutOfMemory) в масштабе. Вместо Функция map () служит той же цели и распределяет обработку по разные рабочие узлы в кластере.

Правильно ли, я не смог найти ни одного документа, в котором говорится, что forEach не распространяется во время распространения карты !!!

1 Ответ

1 голос
/ 14 марта 2019

Я полагаю, вы говорите о применении этих функций к RDD или Dataset.Ничто не приходит к водителю в любом случае.Весь код выполняется в исполнителе.foreach - это действие, которое ничего не возвращает, тогда как map () действует как преобразователь из одного значения в другое.

def foreach (f: (T) ⇒ Unit): Unit Применяет функцию f ко всем элементам этого RDD.

foreach (func) Запускает функцию func для каждого элемента набора данных,Обычно это делается для побочных эффектов, таких как обновление Аккумулятора или взаимодействие с внешними системами хранения.Примечание. Изменение переменных, отличных от Accumulators, вне функции foreach () может привести к неопределенному поведению.См. Понимание замыканий для получения дополнительной информации.

def map [U] (f: (T) ⇒ U) (неявный arg0: ClassTag [U]): RDD [U] Возврат нового RDD путем применения функции квсе элементы этого СДР.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...