Чтобы транслировать переменную таким образом, чтобы переменная происходила ровно один раз в памяти на узел кластера, можно сделать: val myVarBroadcasted = sc.broadcast(myVar)
затем получить его в преобразованиях RDD следующим образом:
myRdd.map(blar => {
val myVarRetrieved = myVarBroadcasted.value
// some code that uses it
}
.someAction
Но предположим, теперь я хочу выполнить еще несколько действий с новой передаваемой переменной - что, если у меня не будет достаточно места для кучи из-за старых широковещательных переменных?! Мне нужна функция типа
myVarBroadcasted.remove()
Теперь я не могу найти способ сделать это.
Кроме того, очень близкий вопрос: куда идут широковещательные переменные? Они входят в долю кэша общей памяти или только в куче?