【发布时间】:2017-01-17 04:32:41
【问题描述】:
我对 Spark 和 Scala 非常陌生,我正在实现一个迭代算法来操作一个大图。假设在 for 循环中,我们有两个 RDD(rdd1 和 rdd2)并且它们的值被更新。例如:
for (i <- 0 to 5){
val rdd1 = rdd2.some Transformations
rdd2 = rdd1
}
所以基本上,在迭代 i+1 期间,rdd1 的值是根据它在迭代 i 时的值计算的。 我知道 RDD 是不可变的,所以我不能真正为它们重新分配任何东西,但我只是想知道,我的想法是否可以实现。如果是这样,怎么做?非常感谢任何帮助。
谢谢,
更新: 当我尝试这段代码时:
var size2 = freqSubGraphs.join(groupedNeighbours).map(y => extendFunc(y))
for(i <- 0 to 5){
var size2 = size2.map(y=> readyForExpandFunc(y))
}
size2.collect()
它给了我这个错误:“递归变量 size2 需要类型” 不知道是什么意思
【问题讨论】:
-
第二个错误是因为您在循环中使用了
var size2 = size2...。你不需要你已经声明的var。 -
非常感谢您的评论。即使删除 var 也没有帮助我,我仍然得到了错误。我使用了 foldRight,它帮助我修复了错误。
-
很高兴您的问题以另一种方式得到解决,但
var仍然是您发布的代码的问题。
标签: scala apache-spark