我试图用来自另一个地图的更多信息更新RDD ....我写了这个但是没有用。
其中:
LocalCurrencies是货币序列类
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))
有什么建议吗?
由于
答案 0 :(得分:2)
map
修改 RDD,它会创建一个新的(同样适用于每个Spark转换)。如果你实际上没有对这个新的RDD做任何事情,Spark甚至都不会打扰它。所以你要写
val rdd1 = rdd.map(...).map(...) // better to combine two `map`s into one
并从那时开始使用rdd1
(如果需要,您仍然可以使用rdd
)。这不一定是唯一的错误,但您仍需要修复它。