Как проверять и оптимизировать затворы в Spark - PullRequest
0 голосов
/ 06 апреля 2020

Apache Spark вычисляет замыкания функций, примененных к СДР для отправки их на узлы-исполнители.

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

Существуют ли какие-либо инструменты для проверки содержимого замыканий, отправляемых в исполнители? Или какой-то другой способ их оптимизации?

1 Ответ

1 голос
/ 07 апреля 2020

Я не уверен, что есть инструмент для проверки замыканий, но один из способов оптимизировать затраты на сериализацию - это использовать широковещательные переменные (https://spark.apache.org/docs/latest/rdd-programming-guide.html#broadcast -variables ), которые будут сериализовать и отправлять копию возражать против каждого исполнителя. Это полезно для stati c, объектов только для чтения (т. Е. Справочной таблицы / словаря) и может сэкономить на затратах на сериализацию. Например, если у нас есть 100 разделов и 10 узлов-исполнителей (по 10 разделов на исполнителя), а не сериализация и отправка объекта каждому разделу (100x), он будет только сериализован и отправлен каждому исполнителю (10x); как только объект будет отправлен исполнителю для одного раздела, другие разделы будут ссылаться на копию в памяти.

Надеюсь, это поможет!

...