【发布时间】:2023-03-17 21:07:01
【问题描述】:
我创建了一个包含 Vector 的 PairRDD。
var newRDD = oldRDD.mapValues(listOfItemsAndRatings => Vector(Array.fill(2){math.random}))
稍后我会更新 RDD:
newRDD.lookup(ratingObject.user)(0) += 0.2 * (errorRate(rating) * myVector)
然而,虽然它输出了一个更新的 Vector(如控制台所示),但当我下一次调用 newRDD 时,我可以看到 Vector 值已更改。通过测试,我得出的结论是它已经变成了math.random 给出的东西——因为每次我调用newRDD 时,Vector 都会发生变化。我知道有一个谱系图,也许这与它有关。我需要将 RDD 中保存的 Vector 更新为新值,并且我需要重复执行此操作。
谢谢。
【问题讨论】:
-
newRDD 是一个 RDD,根据定义是不可变的。我认为您无法更改 RDD 中 Vector 内的值。
标签: scala apache-spark rdd