在mapWithState中计时状态

时间:2016-08-29 00:35:09

标签: scala spark-streaming stateful

我想在mapwithstate中编写一个函数,该函数启用了超时...

def trackStateFunc(batchTime: Time, 
                    key: String, value: Option[Int], 
                    state: State[Long]): Option[(String, Long)] = {
   if (state.isTimingOut()) {
     //write state to database
     return None
   } else if (state.exists) {
       var c = state.get()
       if (value.getOrElse(null) != null) {
         //update c
         c = c + value
         state.update(c)
       }
       Some(key,c)
     } else {
         Some(key,value.getOrElse(0).toLong)
       }
}

我想知道一个状态是否超时然后它可能不会退出,我上面的代码不会抛出任何异常..

在哪种情况下,值Option[int]不存在..如果超时?

1 个答案:

答案 0 :(得分:1)

  

在这种情况下,值Option[int]不存在..如果它是定时的   出?

是的,一旦value超时,mapWithState的{​​{1}}参数将为None。发生这种情况时,State[S]也会设置为state.isTimingOut()

如果您对true的更多特征感兴趣,那么

I've written就此问题确切。