Dataflowのテンプレートを作ってみる

GMOアドマーケティングのT.Kです。
既存のバッチ処理をDataprocからDataflowへ移植する際にDataflowのテンプレートが気になったので、
入門ガイドのクラシック テンプレートの作成を参考にして、WordCountのコードを改修してテンプレートを作ってみます。

  • テンプレート作成コマンド
  • コード修正なしでテンプレートを作ってみる
    IllegalArgumentExceptionが発生しました。
  • ValueProvider対応
    パイプラインオプションを受け取る為にはValueProviderを使う必要があるので、パラメータの型をString型からValueProvider<String> に変更します。
  • 作成は出来たがUnsupportedOperationExceptionが発生しました
  • 原因はwaitUntilFinish
    テンプレートからDataflowRunnerを実行する場合は、waitUntilFinishがサポートされていないようです。
    waitUntilFinishを使わないように変更します。
  • テンプレートを作成できました
  • テンプレートの実行
    gcloudコマンドから問題なく実行できました。
  • まとめ
    テンプレートにする事自体は軽い改修で対応出来ました。
    ジョブの終了待ちオプションが見当たらないので、ポーリング監視を追加する必要がありそうです。
    また、同一ソースでDirectRunnerに対応させる方法が分からなかったので、テンプレート対応は見送りました。
    引き続き調査を継続していきたいと思います。