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