2017-02-18 5 views
2

Я новичок в Spark, и я пытаюсь понять, в чем преимущество использования широковещательной версии var с использованием обертки singleton. Я знаю, что Spark также пытается распространять широковещательные переменные с использованием эффективных широковещательных алгоритмов для снижения стоимости связи, но предположим, что это происходит один раз на длинном жизненном приложении, следовательно, это не накладные расходы.Spark broadcast vs. Singleton wrapper

В каждой задаче будет храниться копия singelton или только самого исполнителя.

Я пытаюсь понять, как это работает с singleton и сравнить его с трансляцией.

Если этот вопрос повторяется, пожалуйста, дайте мне знать, так как я не нашел ответа на один раз.

ответ

0

В каждой задаче будет храниться копия singelton или только самого исполнителя.

Каждый работник хранит одну кешированную копию широковещательной переменной. Все задачи, требующие доступа к широковещательной переменной, относятся к одной и той же копии, находящейся на этом рабочем месте. Да, это единственный экземпляр для каждого работника, но не один синглет уровня JVM, так как его жизненный цикл управляется BroadcastManager и ContextCleaner.

Эта книга описывает это блестяще здесь https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-broadcast.html Посмотрите, насколько хорошо это обозначено на этой диаграмме.