2016-07-14 6 views
1

私がPatternTimeoutFunctionを使用して、定義された時間ウィンドウから外れるとイベントシーケンスを破棄します。Apache Flink CEPタイムアウトパターンが時間ウィンドウで定義されていない

パターンタイムアウトが発生すると

public Watermark checkAndGetNextWatermark(Event lastElement, long extractedTimestamp) { 
    return new Watermark(extractedTimestamp); 
} 

は、timeoutTimestamp次の透かしを受信した後、最初のイベントのタイムスタンプ+ timewindow

しかし、タイムアウトがトリガさの値に等しくなければならない次のように私は透かしを設定しています。次の透かしを受信した後、またはtimeWindow期限切れに基づいてタイムアウトが発生しましたか?

答えて

1

イベントタイムを使用すると、タイムアウトはウォーターマークの受信によってトリガーされます。このタイムスタンプのウォーターマークを受け取った場合、特定のポイントまですべての要素を見たことができるだけであるためです。

これは、タイムアウトタイムスタンプが、次のウォーターマークの値に応じて、最初のイベントタイムスタンプ+ウィンドウ長より長くなる可能性があることを意味します。したがって、タイムアウトタイムスタンプは実際には、あなたのパターンがタイムアウトしたことを認識したときのイベント時刻です。

+0

ウォーターマークの時刻を新しいウォーターマーク(extractedTimestamp + 1)として増やすと、タイムアウトが発生しますか? – ravthiru

+0

'extractedTimestamp'が何であるかによって異なります。 'extractedTimestamp'が' timestampOfElement + windowLength - 1'と等しければ、それはトリガすべきです。 –

+0

私が観察したのは、タイムアウト/透かし処理は、次のイベントを受信した後にのみトリガされることです。私は1つのイベントしか持っていないことをテストしました。ウィンドウの長さの後にタイムアウトする必要があります。 – ravthiru

関連する問題