ストリーミング パイプラインの基礎

ストリーミング データのパイプラインと Cloud Dataflow SQL を初めて使用する場合は、コレクションウィンドウウォーターマークトリガーの概念をよく理解してください。

コレクションの種類

PCollection(またはコレクション) は、パイプライン データとして機能する複数要素のデータセットを表します。このデータセットは分散して存在する可能性があります。パイプライン変換では、コレクションをパイプラインの各ステップの入力または出力として使用します。コレクションには、固定サイズのデータセットだけでなく、Cloud Pub/Sub のように継続的に更新されるデータソースのデータセットも保持できます。

制限付きのコレクションの場合、グループ オペレーションにより、コレクション内で同じキーを持つ要素がグループ化されます。制限なしのコレクションの場合、すべての要素を収集することはできません。継続的に更新されるデータソースから新しい要素が常に追加されるため、要素数が無限に増える可能性があります(このようなデータをストリーミング データといいます)。

ウィンドウとウィンドウ処理関数

ウィンドウ処理では、個々の要素のタイムスタンプに応じて、コレクションをウィンドウに分割することで、制限なしコレクションをグループ化します。各ウィンドウには一定数の要素が入ります。グループ化オペレーションは、ウィンドウ単位で暗黙的に行われます。グループ化オペレーションでは、コレクション全体のサイズが無制限でも、各コレクションを複数の有限なウィンドウが連続しているものとして処理します。

ウィンドウ処理関数には、各ウィンドウへの要素の割り当て方法と、グループ化された要素のウィンドウのマージ方法を指定します。ウィンドウ処理関数でサポートされるのは、次の 3 つのウィンドウです。

  • タンブリング ウィンドウ(Apache Beam では固定ウィンドウ)
  • ホッピング ウィンドウ(Apache Beam ではスライディング ウィンドウ)
  • セッション ウィンドウ

タンブリング ウィンドウ

最も簡単なウィンドウ処理は、タンブリング ウィンドウを使用する方法です。タンブリング ウィンドウは、データ ストリームの間隔に重複がない継続期間を表します。たとえば、5 分間のウィンドウを設定した場合、タイムスタンプの値が 0:00:00 から 0:05:00 未満の制限なしコレクションの要素が最初のウィンドウに属し、タイムスタンプ値が 0:05:00 から 0:10:00 未満の要素は 2 番目のウィンドウに属します。

期間が 30 秒のタンブリング ウィンドウを表す画像

図 1: 期間を 30 秒に設定したタンブリング ウィンドウ。

ホッピング ウィンドウ

ホッピング ウィンドウは、データ ストリーム内の間隔を表します。たとえば、各ウィンドウにデータが 5 分間維持される場合でも、新しいウィンドウが 10 秒ごとに開始します。ウィンドウの開始間隔はピリオドと呼ばれます。この例のウィンドウ サイズは 5 分、ピリオドは 10 秒です。

複数のウィンドウが重なり合うため、データセットの大半の要素は複数のウィンドウに属しています。ホッピング ウィンドウは、平均データを取得する場合に便利です。この例では、過去 1 分間のデータを比較し、30 秒ごとに更新を行っています。

ウィンドウ期間が 1 分、ウィンドウ ピリオドが 30 秒に設定されたホッピング ウィンドウを表す画像

図 2: 1 分のウィンドウ期間と 30 秒のウィンドウ ピリオドが設定されたホッピング ウィンドウ。

セッション ウィンドウ

セッション ウィンドウには、別の要素とのギャップに存在する要素が含まれます。セッション ウィンドウ処理はキーごとに適用されます。時間の点で不規則に配信されるデータが存在する場合に有効です。たとえば、ユーザーのマウス操作を表すデータ ストリームでは、アイドル状態の時間帯が長く続き、クリックが集中する期間が点在します。最小ギャップ時間が経過してからデータが届くと、新しいウィンドウが開始されます。

最小ギャップ期間が設定されたセッション ウィンドウを表す画像

図 3: 最小ギャップ時間が設定されたセッション ウィンドウ。データキーのウィンドウは、データ分布に応じて異なります。

ウォーターマーク

ウォーターマークは、特定のウィンドウのすべてのデータがパイプラインに届くタイミングを表す概念です。データが時間順に届くとは限りません。また、予測可能な間隔で配信されるとも限りません。このため、Cloud Dataflow ではウォーターマークを追跡しています。さらに、データイベントが、その生成順序と同じ順序でパイプラインに届くという保証もありません。ウォーターマークがウィンドウの終わりを超えても継続している場合、そのウィンドウのタイムスタンプ内に到着した要素は遅延データとして扱われます。

トリガー

トリガーは、データが到着したときに集計結果をいつ出力するかを決定します。制限付きデータの場合、すべての入力が処理された後に結果が出力されます。制限なしデータの場合、ウォーターマークがウィンドウの境界を通過するときに結果が出力されます。また、そのウィンドウの入力データがすべて処理されたとシステムで推測していることを示します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。