2016-04-12 33 views
2

我想更新RDD與更多的信息從另一個地圖....我寫這個,但不工作。斯卡拉 - 更新RDD與另一個地圖

其中:

LocalCurrencies是貨幣類

RDD的序列:RDD [字符串,字符串]

... 
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)) 

任何建議?

感謝

+0

LocalCurrencies是地圖類型是什麼? –

+0

另外,rdd的類型是什麼?它是Rdd [String]嗎? –

+0

請提供一個可重現的例子。示例數據總是受歡迎的,但您可以從所有變量的類型開始。 – zero323

回答

1

map修改的RDD,它會創建一個新的(同樣適用於每一個星火變換)。如果你實際上沒有對這個新的RDD做任何事情,Spark甚至不會創建它。所以,你想寫

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

rdd1從此一個工作(你仍然可以使用rdd爲好,如果需要的話)。這不一定是唯一的錯誤,但您仍然需要修復它。