DataflowJavaSDK Weekly

DataflowJavaSDK の更新を解説します。このブログは Google 社とは一切関係ありません。

Reload Streaming Pipeline, Window in sideInput, Move to the backend

まだ5月前半のコミットを追随している途中です。

Reload Streaming Pipeline

Add support to the SDK for reloading streaming pipelines. This is no… · GoogleCloudPlatform/DataflowJavaSDK@2229a47 · GitHub

"This is not yet supported by the dataflow service." とのことなのでまだ利用できないみたいですが、DataflowPipelineDebugOptions など起動時オプションとして --reload を受け付けて、Streaming モードの Pipeline のリロードというのを入れようとしているみたいです。 Pipeline を動かしたままで worker の処理を途中から更新できるようにするってことですかね。末端の処理ならいいけど、Merge や GroupByKey の構成変わるのは大変そう。

Window in sideInput

Fix race condition that can cause side inputs to be null. This chang… · GoogleCloudPlatform/DataflowJavaSDK@449d8ee · GitHub

sideInput での Window/Trigger に関して race condition の修正とのこと。

Streaming モードで Windows がある状態での sideInput がどういう扱いになるのか(どのタイミングのものがその Window で取得できるのか、どう同期されるのか)というのは謎のひとつなのですが(試したことがないです)、WorkItem の処理中はキャッシュしておくようにしたというコミットログなので、やっぱりある程度バッファリングされるみたいですね。 あと WorkItem という新しい語彙が出てきました。WorkItem は Dataflow の Streaming モードの元となっている Windmill の用語みたいです。

Move to the backend

Move GroupByKey expansion to the backend. · GoogleCloudPlatform/DataflowJavaSDK@2eff826 · GitHub

タイトルの通りで、WindowFn つきの GroupByKey をよりプリミティブなオペレーションに展開するのをサービス側にもっていって SDK では展開しないようにしているというもので、これ自体はさほど大きな変更ではないのですが、サービス側に遮蔽される部分を増やす方向で SDK だけ読んでもなぁという感じではありますね。