輪読会ページ
Streaming Systems 輪読会 - 第12回 (2022/12/12 19:00〜)
発表者
All Your Joins Are Belong to Streaming
- すべての join は streaming join とみなすことができるよ。
- この後、次の2つのテーブルを例として説明を行うよ。
- Num: 数字
- Id: テーブル名+Num (+ alpha) ← これを join predicate とする
- Time: レコードの arrival time
Unwindowed Joins
- Unbounded なデータの streaming join には windowing が必須だというのは誤解だよ。
- Join は単なる grouping の一種だよ。そして、grouping はテーブルを生成するよ。
- Ungrouping (つまり trigger) によって、join の結果を stream として処理できるよ。
- watermark trigger
- per-record trigger ← 簡単のためにこっちで説明する
- この後、各種の join type の streaming join がどのように振る舞うか説明していくよ。
- FULL OUTER
- LEFT OUTER
- RIGHT OUTER
- INNER
- CROSS
- ANTI
- SEMI
- 簡単のために、すべての join は equi-join (join predicate が “=”) かつ、Left テーブルの各行にマッチする Right テーブルの行は高々1つであると仮定するよ。
FULL OUTER
- すべてのデータが届いた 12:10 での FULL OUTER join の結果だよ。
- FULL OUTER なのでマッチしない行は null とペアにされて出力されるよ。