Atlas Stream Processing Windowsは、データストリームの時間指定されたサブセットを取得する 集計パイプライン ステージであり、ストリーミング データに対して一定の入力を必要とする操作を実行できます。
こちら。 で説明されているサンプル ストリーム プロセッサを検討してください。 $match
ステージは$source
によって取り込まれたデータのストリームを直接操作し、ストリーム プロセッサが取り込む各ドキュメントを一致条件と照合します。
一方、 $group
ステージとそれに含まれるさまざまな統計計算は、無制限データでは実行できません。最小値、最大値、平均値、中央値を決定するには、まず考慮する値のセットを制限する必要があるためです。 $pushや$topなどの多くの非数学演算子でも、境界のあるデータが必要です。
ストリーム プロセッサは、これらの限界を ウィンドウで提供します。 ウィンドウが開き、ストリーム プロセッサが取り込むすべてのドキュメントは、事前定義された時間が経過してウィンドウが閉じられるまで、そのウィンドウの状態に蓄積されます。 ウィンドウは、その間隔中にキャプチャしたすべてのドキュメントをバッチし、このセットを内部パイプラインに渡します。 このパイプライン内では、バッチ処理されたドキュメントは保管中のデータと区別できません。
Atlas Stream Processing はタンブリング ウィンドウ、ホッピング ウィンドウ、セッション ウィンドウをサポートしています。
ダンプリング Windows
ダンプリングWindowsは、キャプチャされる時間間隔によって完全に定義されるWindowsです。 これらの時間間隔は重複しません。
例
3 秒間隔のローリング ウィンドウを定義します。 ストリーム プロセッサを起動すると、次のことを行います。
ウィンドウが 3 秒開きます。
最初のウィンドウは、ストリームが 3 秒以内に生成するすべてのドキュメントをキャプチャします。
3 秒が経過すると、ウィンドウが閉じ、そのウィンドウ内のすべてのドキュメントに集計ロジックが適用されます。
allowedLateness
を構成する場合、ウィンドウが閉じられた後に Atlas Stream Processing は遅延メッセージをデッド 文字キューに書込みます。最初のウィンドウが閉じるとすぐに新しいウィンドウが開き、次の 3 秒間ストリームからドキュメントがキャプチャされます。
Windowsを使用すると、個々のドキュメントを繰り返し処理することなく、データ ストリームを包括的にキャプチャできます。
ホスティングWindows
ホスティングWindowsは、取得される時間間隔と各ウィンドウを開く間隔によって定義されるWindowsであり、hopと呼ばれます。期間は頻度から切り離されているため、ホスティングWindowsを重複させたり、間隔を設定したりできます。
オーバーラップするホスティング ウィンドウを定義するには、 間隔よりも小さい請求書を設定します。
例
間隔が 20 秒で、ホスティングが 5 秒のホスティング ウィンドウを定義します。 ストリーム プロセッサを起動すると、次のことを行います。
ウィンドウが 20 秒開きます。
最初のウィンドウは、ストリームが 20 秒以内に生成するすべてのドキュメントをキャプチャします。
5 秒後に別のウィンドウが開き、次の 20 秒以内にすべてのドキュメントがキャプチャされます。 最初のウィンドウはまだ開いているため、次の 15 秒間にストリームが生成するすべてのドキュメントは、両方のWindowsによってキャプチャされます。
最初のウィンドウが開いてから 20 秒後にウィンドウが閉じられ、そのウィンドウ内のすべてのドキュメントに集計ロジックが適用されます。
5 秒後に 2 番目のウィンドウが閉じ、最初のウィンドウで集計ロジックの対象となるドキュメントを含む、そのウィンドウ内のすべてのドキュメントに集計ロジックが適用されます。
allowedLateness
を構成する場合、ウィンドウが閉じられた後に Atlas Stream Processing は遅延メッセージをデッド 文字キューに書込みます。
間隔のあるホスティングウィンドウを定義するには、間隔よりも大きいオプションを設定します。
例
間隔が 3 秒で、ドロップが 5 秒のホスティング ウィンドウを定義します。 ストリーム プロセッサを起動すると、次のことを行います。
ウィンドウが 3 秒開きます。
最初のウィンドウは、次の 3 秒間のすべてのドキュメントをキャプチャします。
3 秒が経過すると、ウィンドウが閉じ、そのウィンドウ内のすべてのドキュメントに集計ロジックが適用されます。
さらに 2 秒が経過すると、次のウィンドウが開きます。
Atlas Stream Processing は、この 2 秒中にストリームが生成したドキュメントを処理しません。
セッションウィンドウ
セッション ウィンドウは、入力ストリーム内の各 "セッション" に対してパイプラインを実行できるウィンドウです。2 つのドキュメントが同じパーティションを持ち、かつそのタイムスタンプの差がセッション ギャップ未満であれば、それらは同じセッションと見なされます。
ウィンドウを閉じると、その結果は次の段階にリリースされます。
例
$userId
のパーティション、5 分のギャップ、5 秒の許容遅延を定義します。ストリーム プロセッサを起動すると次の動作が発生します。
最初のドキュメントが
$sessionWindow
に到達すると、ウィンドウが開きます。プロセッサに到達した最新の一致するドキュメントから 5 分 5 秒以内に同じ
userId
値(このフィールドの欠落を含む)を含むドキュメントは、同じ セッションウィンドウに追加されます。ウィンドウは、5 分間隔に 5 秒の遅延許容時間を加えた間に、ドキュメントが追加されなくなるまで開いたままになります。