2016-04-12 3 views
2

mapWithState().timeout()関数をイベントとして使用して、他の関数をトリガーしたいと考えています。そうする方法はありますか?mapWithState()。一部の関数をトリガーするtimeout()

statesnapshot()については、timeoutログメッセージを検索しましたが、これについて十分な情報が見つかりませんでした。私の問題に対する何らかの答えが始まるだろうか?これについてもっと知る場所はどこですか?

答えて

4

という機能をmapWithState().timeout()というイベントとして使用して、他の機能を起動したいと考えています。方法はありますか?

はい、可能です。あなたができることは、タイムアウトが発生したときに呼び出されるアクションを定義することです。 MapWithStateRDDでタイムアウトが発生したことをどのように知っていますか? State[S].isTimingOut()メソッドを見ることができます。タイムアウトの期限が切れた後、この方法では、trueが得られるとmapWithStatevalueNoneに設定された状態でStateSpec方法1つの最後の時間を実行します:

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 
    } 
} 
+0

感謝を。私は疑問を抱いていました。「国家」の「タイムアウト」を強制できますか?私。 'isTimingOut()'が1に設定されている変数を設定できますか? – wipman

+1

いいえ、 'StateSpec'を作成するときだけ、タイムアウト*期間を設定することができます。 –

関連する問題