0
我做了以下内容:GraphX:无缓存错误输出()
var count = 0
while(count > 0){
val messages = graph.vertices.flatMap{
// Create messages for other nodes
}
// Cache which is critical for the correct execution
count.cache()
count = messages.count()
val msgType1 = messages.filter()
val msgType2 = messages.filter()
println(count)
//Should be exactly messages.count()
println(msgType1.count() + msgType2.count())
println("---")
}
如果我执行它正是这样,那么输出是:
8
6 2
---
11
3 8
---
0
0 0
---
这加起来正好到消息计数。
如果我在flatMap操作后删除count.cache()
,那么在对消息进行计数之后,对消息的过滤是错误的。它看起来像计数清除消息或类似的东西。
的输出是:
8
0 0
---
0
0 0
---
这是为什么发生?如果我在那时使用缓存操作,或者它应该在没有缓存消息的情况下工作,那么我的程序是否可用?