🐙

【PDE勉強#03】ウィンドウ処理(タンブリング/ホッピング/セッション)

に公開

⏰ ウィンドウの違いをやさしく解説:タンブリング・ホッピング・セッションとは?

ストリーミング処理に欠かせない「ウィンドウ処理」。
中でもよく出てくる3種類、タンブリングホッピングセッションの違いを、やさしく整理してみました!


🧃 ウィンドウ処理ってなに?

ストリーミングの世界では「ずーっと流れてくるデータ」を区切って集計する必要があります。
その「どう区切るか?」の方法がウィンドウ処理です。


🍩 まずはざっくり比較

ウィンドウの種類 特徴 たとえ話
タンブリング 時間でカチッと区切る 「毎分」など 1分ごとに箱を交換する
ホッピング 時間を重ねて区切る 「30秒幅を2秒おき」 30秒の窓を2秒ごとにスライドしてのぞく
セッション アクティビティで区切る 「ユーザーが10秒以内に連続アクセス」 人が離れたら会話が切れるチャット

🕰 タイムラインでイメージしよう

📦 タンブリング(固定で切る)

|←──10秒──→|←──10秒──→|←──10秒──→|[Window1] [Window2] [Window3]

  • 重なりなし、固定長
  • 毎10秒・毎1分などにカッチリ集計

🪟 ホッピング(重なりながら切る)

|←────30秒────→| [Window1]
     |←────30秒────→| [Window2]
          |←────30秒────→| [Window3]

  • 重なったウィンドウで複数の視点から集計
  • 過去30秒を2秒おきにスライドして見る、など

👤 セッション(行動に合わせて切る)

click ─── click ────(←10秒以内)─── click → [Session 1]
(←15秒空いた)
click ──── click → [Session 2]

  • アクションが途切れたらセッション終了(可変長)
  • ユーザーの行動ベースで集計

🪄 実務での使い分け例

シチュエーション 選ぶウィンドウ
毎時のアクセス数を出したい タンブリング
過去30秒間のデータを2秒おきに出したい ホッピング
ユーザーごとの連続した操作を分析したい セッション

✍️ 最後に

「ウィンドウの違い」は、Dataflow や Spark Streaming などの設計で超重要!
それぞれの特徴をつかんで、実践でも使い分けていきましょう〜!

Discussion