タンブリング ウィンドウでキー付きストリームを処理するために、Flink の DataStream API を使用しています。
簡単な問題は次のとおりです。
入力イベント オブジェクトの例:
{timestamp:1462363362000, user_id:1, country:US, mark:50}
{timestamp:1462363361000, user_id:1, country:US, mark:40}
{timestamp:1462363368000, user_id:1, country:US, mark:30}
{timestamp:1462363368000, user_id:2, country:US, mark:200}
{timestamp:1462363367000, user_id:2, country:US, mark:300}
- イベントのタイムスタンプを使用するために assignTimestampsAndWatermarks を使用しました
- user_id フィールドを使用してデータを入力しました
.
KeyedStream<Event, Tuple> keyedStream = eventsStream
.assignTimestampsAndWatermarks(new MessageTimestampExtractor())
.keyBy("user_id");
キー付きデータを取得したので、イベントのタイムスタンプによる最も早いイベントに基づいて 10 分のウィンドウを作成し、後でそのウィンドウで何らかの集計を実行したいと考えています。
そのウィンドウの user_id の最初に従って開始される静的サイズ (10 分) のウィンドウを作成するにはどうすればよいですか。つまり、ウィンドウが終了して user_id が再び表示されると、新しいウィンドウが作成されます。
同様の要件に答えていることがわかった唯一のもの(ただし、私が必要とする要件とは正確には一致しません)は、イベントタイムセッションウィンドウを使用することです(この質問を書いている時点では安定していません、Flink 1.1 - https://ci.apache .org/projects/flink/flink-docs-master/apis/streaming/windows.html )
それを達成する方法はありますか?
ありがとう