【问题标题】:Scala - Update RDD with another MapScala - 用另一个地图更新 RDD
【发布时间】:2016-04-12 22:39:16
【问题描述】:

我正在尝试使用来自另一个地图的更多信息来更新 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))

有什么建议吗?

谢谢

【问题讨论】:

  • LocalCurrencies 是 Map 的类型是什么?
  • 还有,rdd的类型是什么?是 Rdd[String] 吗?
  • 请提供一个可重现的例子。样本数据总是受欢迎的,但您可以从所有变量的类型开始。
  • @MukrramRahman - 已更新,请原谅我的错误,我是 scala 新手
  • 看起来可能值得一看 IndexedRDD:github.com/amplab/spark-indexedrdd...

标签: scala apache-spark rdd


【解决方案1】:

map 不会修改一个 RDD,它会创建一个新的 RDD(同样适用于每个 Spark 转换)。如果你实际上没有对这个新的 RDD 做任何事情,Spark 甚至不会费心去创建它。所以你想写

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

并从那时起使用rdd1(如果需要,您仍然可以使用rdd)。这不一定是唯一的错误,但您仍然需要修复它。

【讨论】:

    猜你喜欢
    • 2016-12-16
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2016-08-23
    相关资源
    最近更新 更多