我试图在DStream上进行单元测试。
我使用可变队列ssc.queueStream(red)
我将ManualClock设置为0 启动我的流媒体上下文 将我的ManualClock推进到batchDuration milis
当我在做
时stream.slice(Time(0), Time(clock.getTimeMillis())).map(_.collect().toList)
我得到了一个结果。
当我做的时候
for (time <- 0L to stream.slideDuration.milliseconds + 10) {
println("time "+ time + " " +stream.compute(Time(time)).map(_.collect().toList))
}
它们都不包含stream.compute(Time(clock.getTimeMillis()))
那么在不考虑参数差异的情况下,这两个函数之间的区别是什么?
答案 0 :(得分:1)
只有在滑动窗口中提供的时间是正确的时间时,计算才会返回RDD,即零时间+幻灯片持续时间的倍数。
切片会将滑动持续时间的从时间和时间对齐,并计算每个时间。
答案 1 :(得分:0)
在幻灯片中,您提供时间间隔和时间间隔,只要它有效我们生成Seq [时间]
def to(that: Time, interval: Duration): Seq[Time] = {
(this.milliseconds) to (that.milliseconds) by (interval.milliseconds) map (new Time(_))
}
然后我们&#34;计算&#34;对于每个Seq [时间]实例
alignedFromTime.to(alignedToTime, slideDuration).flatMap { time =>
if (time >= zeroTime) getOrCompute(time) else None
}
与计算相反,我们只计算我们通过计算方法的时间实例...