Apache spark mapWithState().timeout()来触发某些函数
我想使用Apache spark mapWithState().timeout()来触发某些函数,apache-spark,spark-streaming,session-timeout,Apache Spark,Spark Streaming,Session Timeout,我想使用mapWithState().timeout()函数作为触发其他函数的事件。有没有办法做到这一点 我已经阅读了一些statesnashot()来查找timeout日志消息,但没有找到足够的相关信息。这就是我问题的答案的开始吗?在哪里可以找到更多关于这方面的信息 我想使用mapWithState().timeout()函数作为事件 触发其他功能。有没有办法做到这一点 是的,有可能。您可以做的是定义一个在超时发生时调用的操作。如何知道MapWithStateRDD上何时发生超时?你们可以看看
mapWithState().timeout()
函数作为触发其他函数的事件。有没有办法做到这一点
我已经阅读了一些statesnashot()
来查找timeout
日志消息,但没有找到足够的相关信息。这就是我问题的答案的开始吗?在哪里可以找到更多关于这方面的信息
我想使用mapWithState().timeout()
函数作为事件
触发其他功能。有没有办法做到这一点
是的,有可能。您可以做的是定义一个在超时发生时调用的操作。如何知道MapWithStateRDD
上何时发生超时?你们可以看看这个方法。超时过期后,此方法将生成true
,并且mapWithState
将最后一次执行StateSpec
方法,将值设置为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
}
}
谢谢我在想:我能强制执行状态的超时吗?也就是说,我可以将变量isTimingOut()
设置为1吗?否。您只能在创建StateSpec
时设置超时时间。