DataflowJavaSDK Weekly

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

PubsubIO in batch and direct modes, Dataflow API v1b3, Option for GCE Network

そろそろ追い付きそうです。

PubsubIO in batch and direct modes

Adds support for PubsubIO in batch and direct modes. · GoogleCloudPlatform/DataflowJavaSDK@58dde1a · GitHub

Streaming モードでのみ利用可能だった PubSubIO が Batch モードと direct モード(ローカルで実行するモードのことかな?)でも利用可能になっています。 io/PubsubIO に実装が追加されていますが、Source としてではなく DoFn の一種として Create Transform のように何も入力を受け取らずに出力を発生させる Transform として挙動する PTransform を追加しているという感じみたいです。バッチモードで PubSubIO をどう Bounded にするか(つまりデータ量を有限にするか)については、maxNumRecords() や maxReadTime() で読み込む件数か読み込む時間を制限することで指定するようです。

Dataflow API v1b3

Update generated Dataflow API from v1beta3 to v1b3 · GoogleCloudPlatform/DataflowJavaSDK@4763291 · GitHub

コミットメッセージによると呼び出す Dataflow API の v1beta3 から v1b3 に更新したとのことです。beta3 と b3 ってどう違うんだ…。 あと sdk/pom.xml の依存する google-api-services-dataflow のバージョンの指定は確かにそういう変更なんですけど、実際のソースの dataflowClient の呼び出しからは V1b3() を削るという内容になっていて、はて。v1beta3 のバージョンでは V1b3() を呼ぶことで v1b3 相当のバージョンが呼べるようになっていたのかな。 beta と b の間にバージョニングのルールが何かあるんでしょうね。

Option for GCE Network

Adds PipelineOption to specify a GCE network for GCE VMs · GoogleCloudPlatform/DataflowJavaSDK@24b24e5 · GitHub

PipelineOption に network オプションが追加され、Dataflow を実行する VM インスタンスを起動する時の GCE の network が選択できるようになっています。 おお、これ地味に嬉しい場面が考えられて、Dataflow とは別に自分が立ててる GCE インスタンス上に外部ネットワークには公開していないサービスがあって、Dataflow からそれを参照したい時に、firewall 設定をして接続を許可しないといけないのですが、Dataflow の worker はサービスが勝手に起動するので接続元 IP アドレスを自動的に適用するにはネットワークの設定が必要になるわけです。このオプションで Dataflow を実行する worker のネットワークが指定できるので、それが可能になるのですね。