2017-06-13 5 views
0

Ich habe und eine RDD [(Int, Array [Double], Double, Double)].Wie aktualisiert man eine RDD

val full_data = rdd.map(row => { 
     val label = row._1 
     val feature = row._2.map(_.toDouble) 
     val QD = k_function(feature) 
     val alpha = 0.0 
     (label,feature,QD,alpha) 
    }) 

Jetzt möchte ich den Wert von alpha in jedem Datensatz aktualisieren (etwa 10)

var tmp = full_data.map(x=> { 
     x._4 = 10 
    }) 

ich den Fehler bekam

Error: reassignment to val 
     x._4 = 10 

ich das ganze val auf var geändert haben aber dennoch tritt der Fehler auf. Wie aktualisiert man den Wert von Alpha? und ich würde gerne wissen, wie man die ganze Zeile oder eine bestimmte Zeile in einer RDD aktualisiert.

Antwort

1

sind immutable in der Natur. Sie sind so für einfache caching, sharing und replicating gemacht. Es ist immer sicher zu kopieren, als in einem Multi-Threaded-System wie Spark für fault tolerance und correctness in Bearbeitung zu mutieren. Die Wiederherstellung unveränderlicher Daten ist viel einfacher als veränderbare Daten.

Transformation wie copying die RDD Daten an einen anderen RDD ist alle Variablen wie val behandelt werden, das heißt, sie sind immutable so, wenn Sie die letzte Doppel mit 10 zu ersetzen suchen, können Sie tun, ist

var tmp = full_data.map(x=> { 
     (x._1, x._2, x._3, 10) 
    }) 
Verwandte Themen