Help us understand the problem. What is going on with this article?

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

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クラスにまとめられており、

kurtosis
ただのプログラマー
brainpad
ブレインパッドは、2004年の創業以来、データによるビジネス創造と経営改善に向き合ってきたデータ活用・分析企業です。
http://www.brainpad.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした