Um eine Variable zu übertragen, so dass eine Variable pro Knoten in einem Cluster im Speicher genau einmal auftritt man tun kann: val myVarBroadcasted = sc.broadcast(myVar)
abrufen es dann in RDD Transformationen wie so:Wie entfernt man eine Broadcast-Variable aus Heap in Spark?
myRdd.map(blar => {
val myVarRetrieved = myVarBroadcasted.value
// some code that uses it
}
.someAction
Aber nehmen wir nun wünsche ich einige mehr ausführen Aktionen mit neuer Broadcast-Variable - was ist, wenn ich aufgrund der alten Broadcast-Variablen nicht genügend Heap-Space habe ?! Ich möchte eine Funktion wie
myVarBroadcasted.remove()
Jetzt kann ich nicht scheinen, einen Weg zu finden, dies zu tun.
Auch eine sehr verwandte Frage: Wohin gehen die Broadcast-Variablen? Gehen sie in den Cache-Anteil des gesamten Speichers oder nur in den Heap-Anteil?
@Aaronman yep. editiert die Antwort, um den Verweis auf "zerstören" zu löschen. –
Danke. Scheint, das ist nur in Spark +1.0.0, nicht 0.9.0. – samthebest
"Storage-weise werden sie RDDs ähnlich behandelt" bedeutet das, dass sie in der Cache-Fraktion sind? Oder Haufen? – samthebest