Dataflow テンプレートによる簡単なデータ移動
Google Cloud Japan Team
※この投稿は米国時間 2022 年 4 月 26 日に、Google Cloud blog に投稿されたものの抄訳です。
金曜日の午後 4 時。あなたの心はすでに退社後の週末に向かっています。ノートパソコンを閉じようとした矢先、エンジニアリング マネージャーから届いたメール。嫌な予感がします。
「データ サイエンス チームが Kafka クラスタのストリーミング データを分析しなくてはならないため、そのデータを BigQuery で必要としています。月曜日の朝までに用意してもらえますか。」
とても簡単そうです。
30 分ごとに Kafka クラスタからデータを pull する ETL スクリプトを作成したくなるかもしれません。ところが、再試行のロジックを導入する必要があると、突然問題が複雑になります。BigQuery テーブルに書き込まれたデータの形式が正しくない場合、どうすればよいでしょうか。また、ユーザーが受信データのサブセットをフィルタしたり、特定のフィールドを別の形式に変換したりする場合はどうでしょうか。
次に、他のユーザー要件にすばやく着手する必要があります。モニタリングやロギングなど、本番環境データ パイプラインに不可欠な機能面以外の要件についてはどうですか。自作の ETL スタックをより広範な組織にスケールするために必要な運用上の課題は、言うまでもありません。
もはや、そう簡単な要求ではありません。あなたの週末は台無しになりそうです。
このデータ移動のユースケースにクラウド ネイティブな方法があるとしたらどうでしょうか。
そこで、Dataflow テンプレートの登場です。
Dataflow テンプレートなら、数回クリックするだけでデータを移動できます。Dataflow テンプレートが提供するユーザー インターフェースを使えば、プルダウン メニューからソースとシンクの組み合わせを選択し、必要なパラメータの値を入力し、オプションの設定を選択して、パイプラインをデプロイできます。開始されたパイプラインは、業界屈指のフルマネージド Dataflow サービスを活用します。このサービスには、水平および垂直自動スケーリング、動的な作業再調整、無制限のバックエンド(Shuffle や Streaming Engine など)が含まれます。
再試行パターンについては、コードサンプルが用意されています。もちろん、データ損失からユーザーを保護するスナップショットにも対応しています。
ファイル形式の変換が必要でしたら、専用のテンプレートを使用できます。
データをフィルタするには、組み込みの UDF サポートを使用します。
モニタリングとロギングについては、デフォルトで提供されています。
厄介な重複に対処する機能も用意されています。
Dataflow によってデータ エンジニアリングの生産性が 55% 向上することが調査によってわかっていますが、不思議ではありません。
どうやら、あなたの週末は台無しにならずに済みそうです。
このたび、Google 提供の Dataflow テンプレートの一般提供が開始されました。テンプレートは以下の 24 種類です。
ストリーミング
バッチ
ユーティリティ(データ転送にとどまらないユースケースの場合)
Dataflow に慣れていない方にとっては、Dataflow テンプレートは Dataflow への入門にうってつけです。
Dataflow をすでに使い始めている方にとっては、Dataflow テンプレートがずっと前から存在していたことに気付かれたかもしれません。事実、2017 年に Dataflow テンプレートを導入して以来、何千ものお客様が Dataflow テンプレートを利用して、さまざまなデータストア間のデータ移動の多くを自動化しています。またこの度、こうしたオープンソースへの貢献にテクニカル サポートを提供するための構造と人員を整えました。必要な投資を行って専任のスタッフを配置したため、今後は、Dataflow テンプレートを使用した場合でも、本番環境のワークロードが、Google Cloud で実行する他のワークロードと同様に確実にサポートされます。
次のステップ
Dataflow テンプレートは当面のデータ処理のニーズに対応できます。ただし、データ エンジニアの方ならご存じのとおり、要件は進化し、カスタマイズが欠かせません。幸い、Dataflow はそのようなユースケースにも対応できる体制が整っています。
Google 提供のテンプレートを使って Dataflow の利用を開始する。
オープンソースのテンプレート リポジトリにアクセスして、ユースケースに合わせてテンプレートを変更する(または、テンプレートがプリロードされた Cloud Shell インスタンスを起動する)。
Flex テンプレートをデプロイする。これにより、カスタム テンプレートが新たなレベルに引き上げられ、チーム全体でコードが再利用しやすくなります。
Tyson Foods がテンプレートを活用して、エンドユーザーが誰でもデータ移動できるようにした方法を確認する。