DataflowJavaSDK Weekly

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

Streaming mode cache improvement, deprecate winthXXX APIs, StreamingDataflowWorker, DoFnWithContext

先月の更新直後に beta リリースがアナウンスされました。それからしばらくコミットが止まっていたのですが、5月中旬からまた大量のコミットが push されはじめたので徐々に追随していきます。

Streaming mode cache improvement

Improve caching in StreamingModeExecutionContext. · GoogleCloudPlatform/DataflowJavaSDK@82e5e9a · GitHub は Stream mode でのパフォーマンスの改善についての変更のようですが、いくつかよくわからない気になるキーワードが出てきます。 DoFn.RequiresKeyedState という interface があって、どうもこいつは bundle を処理中に(worker はまたがない?)実行時情報を保持しておくストレージとして使えるなにかを指しているようなのですが、どうもこれも実体は Dataflow のクラウド側のみにあって、 SDK 側には実装はないみたいです。

deprecate winthXXX APIs

Fix use of setXXX (which mutates an object) versus withXXX (which sho… · GoogleCloudPlatform/DataflowJavaSDK@89bc303 · GitHub は重大な変更というよりは API の deprecated についてで、withXXX() というメソッド(transform にちょっとパラメータを追加したりするのによく使われてます)を addXXX() とか setXXX() と改名して古いメソッド名は deprecated にしています。@Deprecated という directive? をつけているので多分警告が出るんでしょうね。 コメントをみると withXXX はオブジェクトを破壊的に変更しないことが期待されるので名前を変更したっぽいことが書いてあります。

StreamingDataflowWorker

Add a healthz page to the streaming dataflow worker to support health… · GoogleCloudPlatform/DataflowJavaSDK@a09fe13 · GitHub はちょっとした変更で StreamingDataflowWorker.handle で "/healthz" というヘルスチェック用のパスに対応しているだけなのですが、そもそもこの StreamingDataflowWorker というクラスはどうも HTTP サーバとして口をあけていて、処理状況や利用リソースについての情報を返すものみたいです。GCP のコンソール上で Dataflow の各 Transform 毎の処理がどのくらい進んでいるかをみることができるので、これを使って情報を収集しているのかもしれませんね。クラウド上でもこれが動いているのかよくわかりませんが。

DoFnWithContext

Introduce DoFnWithContext, an annotation based version of DoFn. · GoogleCloudPlatform/DataflowJavaSDK@6e75943 · GitHub で DoFn に代わる(まだ experimental な) DoFnWithContext という interface を導入しています。今度の processElement() は引数に ProcessContext の他に BoundedWindow も受け取り、KeyedState へのアクセスも明示的に指定しなくても持っているという、まあつまり DoFn に最初からいろいろ後から必要になったものを使えるようにしたいけど、beta リリース後だから互換性が派手に壊れるのはよくないから別の名前で定義しておこう、ということだと思うので次第にこちらに移行して欲しい、というところなのではないかと思います。