Cloud Dataflow SQL眺めてみた
- 使ってみた・ドキュメント眺めただけです
- Cloud Dataflow SQLはアルファです(2020/02時点)
Cloud Dataflow SQLとは
- BigQueryのUIから、Cloud Dataflowジョブを作成する機能です
- SQLを書くだけで、Pub/Sub・BigQuery・Cloud Storageのデータを組み合わせて、BigQueryのテーブルに書き出せます(※)
- 内部的にはBeam SQLで処理しているらしいです
※ チュートリアルはPub/SubとBigQueryのJOINですが、リファレンスではPub/Subのメッセージ同士のJOINをしています
使ってみる
チュートリアルでは、以下の作業を行います:
- BigQueryのテーブル作成・データ登録(通常のBigQueryで使う時と同じです)
- Data Catalogに、Pub/Subメッセージの情報を登録
- BigQuery UIから、Pub/SubトピックをDataflowソースとして登録
- BigQuery UIから、SQLを実行
- Pub/Subメッセージをpublish
Dataflowジョブの開始時にサブスクリプションが作られ、そこからメッセージがpullされます。ジョブ実行前にpublishされたメッセージは無視されるので、気をつけませう。
制限
現時点で、結構制限があります。
-
読み込みはPub/Sub・BigQuery・GCS、書き込みはBigQueryだけ
- (日本語版ドキュメントだとGCSの記載はないですが、英語版だと可能とあります)
- 普通のBeam/Dataflowはより多くのサービスと接続(S3とかDatastoreとか)出来ます
- GCSファイルはヘッダーありのCSVのみ
- Pub/SubメッセージはJSON、かつスキーマが事前定義されている
- Dataflow workerのスケールのコントロールは出来ない
- 上限設定出来ないのは怖いかも
- Dataflow jobをdrain出来ない
- ただし、Dataflow画面からはdrain選べ、停止も出来ます‥保証してないという意味?
出来ないとは書いていないが、出来なさそうな点
- 書き出し先のデータセット・テーブル名は固定?
- Beam/Dataflowでは、メッセージの中身に応じて書き込み先を変更することが出来ます(Dynamic Destinationという機能)
SQL
Dataflow SQLは、BigQueryと同じくZetaSQLをベースとしていますが、いくつか違いがあるようです。
- なんとなく高度そうな関数は、Dataflow SQLにはない
- JSON_EXTRACTとかMD5とか
- Dataflow SQLで使える関数はリファレンスに記載があります
- 文字列系
- 数学系(MOD,CEIL,CEILING,FLOORだけ)
- aggregate系(AVG,COUNT,MAX,MIN,SUN)
- Dataflow SQLでは、データソースの種類を明示する必要がある
- 「bigquery.table.テーブル名」みたいな感じ
- Dataflow SQLでは、Streamingのウィンドウ設定がある
- Pub/SubデータをGroup Byする時に必要?
- 「Data that arrives later is dropped.」
Author And Source
この問題について(Cloud Dataflow SQL眺めてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/notrogue/items/6e6410e4912446e56dfd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .