Spark локальная переменная передается исполнителю - PullRequest
0 голосов
/ 19 сентября 2019
var countryMap = Map("Amy" -> "Canada", "Sam" -> "US", "Bob" -> "Canada")
val names = List("Amy", "Sam", "Eric")
sc.parallelize(names).flatMap(broadcastMap.value.get).collect.foreach(println)

//output
Canada
US

Я запускаю это искровое задание в режиме YARN, и я уверен, что драйвер и исполнители не находятся в одном узле / JVM (см. Прилагаемый рисунок).Поскольку countryMap не является широковещательной переменной, исполнитель не должен ее видеть, и этот код не должен ничего печатать.Однако он напечатал Canada и US.

Мой вопрос заключается в том, что Spark автоматически заполняет локальные переменные для исполнителей, если они сериализуются?если нет, то как исполнитель видит локальные переменные драйвера?

enter image description here

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

локальные переменные: драйвер и каждый исполнитель, сериализация не требуется , Совместно используется в приводе / драйвере.Основные переменные: Драйвер и каждая копия (изолировать) задачи, требуется сериализация

0 голосов
/ 19 сентября 2019

Действия Spark выполняются через набор этапов, разделенных распределенными «случайными» операциями.Spark автоматически транслирует общие данные , необходимые для задач на каждом этапе.Передаваемые таким образом данные кэшируются в сериализованной форме и десериализуются перед выполнением каждой задачи.Это означает, что явное создание широковещательных переменных полезно только тогда, когда задачам на нескольких этапах нужны одни и те же данные или когда важно кэширование данных в десериализованной форме.

ссылка https://spark.apache.org/docs/2.3.0/rdd-programming-guide.html#broadcast-variables

Как правило, локальные переменные в драйвере будут транслироваться исполнителям автоматически.Однако вам нужно создавать широковещательные переменные, когда они вам нужны на разных этапах.

0 голосов
/ 19 сентября 2019

Hay Edwards,

, когда вы вызываете collect, которые возвращают набор результатов в драйвер, пытающийся выполнить отображение.что причина, по которой вы можете найти сопоставления, генерируется.

Cheers,

...