3

タンブリング ウィンドウでキー付きストリームを処理するために、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}
  1. イベントのタイムスタンプを使用するために assignTimestampsAndWatermarks を使用しました
  2. 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 )

それを達成する方法はありますか?

ありがとう

4

0 に答える 0