我想使用mapWithState().timeout()
函数作为事件来触发其他一些函数。有办法吗?
我已经阅读了一些statesnapshot()
来查找timeout
日志消息,但没有找到足够的内容。这是我的问题的某种答案的开始吗?哪里可以找到更多相关信息?
答案 0 :(得分:4)
我想将
mapWithState().timeout()
函数用作事件 触发一些其他功能。有没有办法这样做
是的,这是可能的。您可以做的是定义一旦超时发生时要调用的操作。你怎么知道MapWithStateRDD
何时发生超时?您可以查看State[S].isTimingOut()
方法。一旦超时,此方法将产生true
,mapWithState
最后一次执行StateSpec
方法,value
设置为None
:
object Foo {
def main(args: Array[String]): Unit = {
val spec = StateSpec.function(updateState _).timeout(Milliseconds(5))
// Use spec to invoke `mapWithState`
}
def updateState(key: Int, value: Option[Int], state: State[Int]): Option[Int] = {
value match {
case Some(number) => Some(number + 1)
case _ if state.isTimingOut() => // Trigger Code Here
}
}