https://read-streaming-systems.connpass.com/event/253010/
以下の5つの概念を、後のChapterの土台として説明していく (1, 2はChapter1で既出だが、このChapterで再訪)
Triggers
[13:20:00, 13:30:00)
のものだった時、「13:25:00に途中状態から一旦出力する」というトリガも設定できるWatermarks
t' < t
な event time を持つデータがやってくることも現実的にはある。これはlate dataと呼ぶAccumulation
Akidau先生イチオシの、ストリーム処理の分析フレームワーク。
この疑問に答えていくと、とあるストリーム処理のパイプライン(またはその部分)が何をしているものかわかるという代物。
(ぶっちゃけ分かりづらくない…?)
上述の5つの概念のうち、
は全てにカスる。残りの
がどう絡むか記載する。
time-agnostic processing
とか more complex types of windows
がどういう意図なのかは掴みかねた
Where in event time
という質問の解は未定義に思うのだが、文ではそう言ってない気もするここからしばらくバッチ処理の話。What resultとWhere in event timeは(無限データ列が対象の)ストリーム処理持ち出さずとも(有限データ列が対象の)バッチ処理で語れるので。
逆に、以下はバッチの話だと通常出てこない。
これらは全て「途中経過」に関するものであり、有限データを扱うバッチ処理の場合は最後に一発結果を出すだけで基本的に十分なので。
Beam Modelは無限データも有限データも統一的に扱えるので、ここからBeam Modelのコードスニペットが出てくる。
本書の至るところで使われるテーブルと:
> SELECT * FROM UserScores ORDER BY EventTime;
------------------------------------------------
| Name | Team | Score | EventTime | ProcTime |
------------------------------------------------
| Julie | TeamX | 5 | 12:00:26 | 12:05:19 |
| Frank | TeamX | 9 | 12:01:26 | 12:08:19 |
| Ed | TeamX | 7 | 12:02:26 | 12:05:39 |
| Julie | TeamX | 8 | 12:03:06 | 12:07:06 |
| Amy | TeamX | 3 | 12:03:39 | 12:06:13 |
| Fred | TeamX | 4 | 12:04:19 | 12:06:39 |
| Naomi | TeamX | 3 | 12:06:39 | 12:07:19 |
| Becky | TeamX | 8 | 12:07:26 | 12:08:39 |
| Naomi | TeamX | 1 | 12:07:46 | 12:09:00 |
------------------------------------------------
計算が出てくる:
computing keyed integer sums over a simple dataset consisting of nine values
この9行のレコードのScoreカラムの合計値を色んな軸で区切って計算するという話。
上記の9行をevent time v.s. processing time なグラフにプロット(値はScore)すると↓