2016-04-12 3 views
2

Ich versuche, eine RDD mit mehr Informationen von einer anderen Karte zu aktualisieren .... Ich schrieb dies, aber funktioniert nicht.Scala - Update RDD mit einer anderen Karte

Wo:

LocalCurrencies ist eine Folge von Währungsklasse

rdd: RDD [String, String]

... 
val localCurrencies = Await.result(CurrencyDAO.currencies, 30 seconds) 

//update ISO3 
rdd.map(r => r.updated("currencyiso3", localCurrencies.find(c => c.CurrencyId == 
rdd.get("currencyid")).get.ISO3)) 

//Update exponent 
rdd.map(r => r.updated("exponent", localCurrencies.find(c => c.CurrencyId == 
rdd.get("currencyid")).get.Exponent)) 

Jeder Vorschlag?

Dank

+0

LocalCurrencies ist Map of type what? –

+0

Auch, was ist der Typ von RDD? Ist es Rdd [String]? –

+0

Bitte geben Sie ein reproduzierbares Beispiel an. Beispieldaten sind immer willkommen, aber Sie können mit den Typen aller Variablen beginnen. – zero323

Antwort

1

mapnicht eine RDD ändern, erstellt es einen neuen (das gleiche für jede Funke Transformation gilt). Wenn Sie nichts mit dieser neuen RDD machen, wird Spark nicht einmal daran arbeiten. So möchten Sie

val rdd1 = rdd.map(...).map(...) // better to combine two `map`s into one 

schreiben und arbeiten mit rdd1 aus dann ein (Sie noch rdd auch verwenden können, falls erforderlich). Dies ist nicht unbedingt der einzige Fehler, aber Sie müssen es immer noch beheben.