16. 16
① 部分集約処理
• タスクローカルでグループごとに集約処理を行う
② 部分マージ処理1
• 各タスクが部分集約処理した結果を、グループキーに基づいて
シャッフルしてマージ
③ ステートリストア
• 直前のマイクロバッチで保存された「ステート」をリストアする
④ 部分マージ処理2
• 部分マージ処理1の出力とリストアしたステートをマージする
⑤ ステートセーブ
• 部分マージ処理2の結果を「ステート」として保存する
⑥ 最終処理
• 集約関数固有の最終処理
ステートフル集約処理は6つのフェーズで行われる
17. 17
例題: 平均値を求める - 部分集約処理 -
20
17
30
A
B
C
area temp
A 20
B 17
C 30
・
・
・
DataFrame
(観測点の気温)
32
31
22
B
B
A
27
15
17
C
A
A
20
17
30
A
B
C
1
1
1
累積気温 観測件数
累積値とレコード数の属性を追加
sumarea count
63
22
B
A
2
1
27
32
C
A
1
2
分
割
し
て
各
タ
ス
ク
に
分
配
タ
ス
ク
ご
と
に
集
約
18. 18
例題: 平均値を求める - 部分マージ処理1 -
20
17
30
A
B
C
1
1
1
累積気温 観測件数
sumarea count
63
22
B
A
2
1
27
32
C
A
1
2
20
22
32
A
A
A
1
1
2
17
63
B
B
1
2
30
27
C
C
1
1
74A 4
80B 3
57C 2
観測点ごとにマージ
(累積気温と観測件数を足し合わせる)
観
測
点
ご
と
に
シ
ャ
ッ
フ
ル