LoginSignup
2

More than 3 years have passed since last update.

Google提供のDataflowテンプレートとJavaScriptの話

Last updated at Posted at 2020-01-01

tl;dr

  • GoogleはDataflowのテンプレートを提供しているよ
    • コードはGitHubで見られるよ
  • いくつかのテンプレートはJavaScriptで変換の処理を書けるよ
  • JavaScriptの処理はNashornを使っているよ

Google提供のDataflowテンプレートとは

名前の通り、Googleが提供していてるDataflowのテンプレートです。
これを使うことで、コードを(あまり)書かずに一定の処理が行えます。

提供されているテンプレートは、GCPのストレージ(GCS・Pub/Sub・Datastore・BigQuery・Spanner)間の移動を行うものが多く、例えば、

  • Pub/SubからBigQuery(ストリーミング)
  • GCSからBigQuery(バッチ・ストリーミング両方)

などがあります。

ちなみに、GCPのストレージ間移動以外のテンプレートとしては、Datastoreのデータ削除GCS上のファイルの解凍・圧縮などがあります

また、ソースコードがGithubで公開されているので、実装を調べたりすることが出来ます。

Google提供のDataflowテンプレートのJavaScriptとは

いくつかのテンプレートでは、入力(ソース)から出力(シンク)との間に、JavaScriptでの処理(UDF)を挟むことが出来ます。

例えば、GCSからBigQueryでは、入力と出力の間に、

  • 各行を引数として受け取る
  • 処理結果をJSONとして返す

JavaScript関数を経由させることが出来ます(使わないことも出来ます)。

全部のテンプレートでJavaScriptが使えるのではなく、これが出来るテンプレートは、例えば、

などがあります(実際にはもう少しあります)。

どうやって処理しているの

DataflowやApache Beamの機能としてJavaScriptを扱えるわけではなく、テンプレートはJavaで書いており、JavaScriptの部分はJava組み込みのJavaScriptランタイム(Nashorn)で処理しています。

JavaScriptでパイプライン自体を書けるわけではないので、注意してください(2019年時点では)。

細かいのが気なる人向け

例えば、GCSからBigQueryのテンプレートでは、ここらへんで、GCSからの各行をJavaScriptの処理に渡しています。

JavaScript系の処理はJavascriptTextTransformerクラスにまとめられており、

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2