Cloud Dataflow テンプレートを使用すると、Cloud Storage 上にパイプラインをステージングし、さまざまな環境から実行できます。テンプレートは、Google 提供のテンプレートを使用することも、自身で作成することもできます。
従来の Cloud Dataflow のデプロイと比較すると、テンプレートには次のようなメリットがあります。
- パイプラインの実行時にコードを毎回再コンパイルする必要がありません。
- 従来のデプロイでは一般的な、開発環境や関連する依存関係なしでパイプラインを実行できます。これは、繰り返し実行するバッチジョブをスケジュールする際に便利です。
- ランタイムのパラメータによってパイプラインの実行をカスタマイズできます。
- 技術者以外のユーザーでも、Google Cloud Platform Console、
gcloud
コマンドライン ツール、または REST API を使用してテンプレートを実行できます。
従来のジョブ実行とテンプレート化されたジョブ実行の比較
Cloud Dataflow テンプレートによって、従来のジョブ実行のワークフローとは異なる、新たな開発と実行のワークフローが採用されました。テンプレートのワークフローでは、ステージングと実行のステップから開発のステップが分離されます。
従来の Cloud Dataflow ジョブ
Apache Beam パイプラインの開発とジョブの実行は、すべて開発環境内で行われます。
従来の Cloud Dataflow ジョブの典型的なワークフロー:
- 開発者が開発環境を作成し、パイプラインを開発します。環境には、Apache Beam SDK やその他の依存関係が含まれます。
- ユーザーが開発環境からパイプラインを実行します。Apache Beam SDK が Cloud Storage 内のファイルをステージングし、ジョブ リクエスト ファイルを作成し、そのファイルを Cloud Dataflow サービスに送信します。
テンプレート化された Cloud Dataflow ジョブ
Cloud Dataflow テンプレートを使用する場合、ステージングと実行は別のステップです。このように分離されているため、ジョブを実行できるユーザーとジョブの実行元となる場所を柔軟に決定できます。
テンプレート化された Cloud Dataflow ジョブの典型的なワークフロー:
- 開発者が開発環境を作成し、パイプラインを開発します。環境には、Apache Beam SDK やその他の依存関係が含まれます。
- 開発者がパイプラインを実行し、テンプレートを作成します。Apache Beam SDK が Cloud Storage 内のファイルをステージングし、テンプレート ファイル(ジョブ リクエストと類似したもの)を作成し、Cloud Storage 内にテンプレート ファイルを保存します。
- 開発者以外のユーザーは、GCP Console、
gcloud
コマンドライン ツール、REST API でジョブを簡単に実行し、テンプレート ファイルの実行リクエストを Cloud Dataflow サービスに送信できます。
始める前に
独自のテンプレートを作成する際は、使用している Apache Beam SDK のバージョンでテンプレートの作成がサポートされていることを確認します。
Java: SDK 2.x
Cloud Dataflow SDK 2.x for Java を使用してテンプレートを作成するには、バージョン 2.0.0-beta3 以降が必要です。
Python
Cloud Dataflow SDK 2.x for Python を使用してテンプレートを作成するには、バージョン 2.0.0 以降が必要です。
Java: SDK 1.x
Cloud Dataflow SDK 1.x for Java を使用してテンプレートを作成するには、バージョン 1.9.0 以降が必要です。
gcloud
コマンドライン ツールを使用してテンプレートを実行するには、バージョン 138.0.0 以降の Cloud SDK が必要です。