我有以下代码(简化复杂情况):
val newRDD = prevRDD.flatMap{a =>
Array.fill[Int](scala.util.Random.nextInt(10)){scala.util.Random.nextInt(2)})
}.persist()
val a = newRDD.count
val b = newRDD.count
,即使应该保留的RDD(因此是一致的),在大多数情况下,a
和b
也不相同。
是否有办法使第一个动作的结果保持一致,所以当第二个“动作”被调用时,第一个动作的结果将被返回?
*编辑*
我的问题显然是由zipWithIndex
方法引起的,该问题存在于我的代码中-该代码创建的索引高于计数。我会在另一个线程中问这个问题。谢谢
答案 0 :(得分:1)
无法确保100%一致。
调用persist
时,它将尝试将所有分区缓存在内存中(如果适合)。
否则,它将重新计算内存不足的分区。