Intro
Google Cloud Dataflowを触ることがあったので、備忘も兼ねてどんな感じだったか記録を残す。
Google Cloud Dataflowって?
簡単に言うと、ストリーミングデータやらの操作・管理を取り持ってくれるGCPのサービスです。
今回はPubSubで受けたデータをDataFlowを介してCloudStrageに配置しようと思います。
ログやトラッキングデータのような物が不特定多数postされ、それを保持したり後の分析に利用するようなケースを想定しています。
1.Pub/Subにトピックを作成
Pub/Subってまたストレートな名前ですが、こちらもGCPのサービスです。所謂メッセージングというかキューというか。
今回のデータの始点、ある意味トリガーとなります。
とりあえず普通にGUIのコンソールから名前をつけるだけです。
2.CloudStorageにバケット用意
今回の終点となる場所を用意しておきます。
新たにバケットを作るか、既存であれば任意のフォルダを用意してください。
一時ファイルを配置するフォルダも合わせて用意しておきましょう(後述)。
3.DataFlowをテンプレートから作成
ここまで準備できると、あとは画面からポチポチしていくだけでできてしまいます。
というのも、DataFlowには利用頻度の高いユースケースに合わせて、テンプレートが用意されているので、
適宜選んで、必要な設定をするだけである程度動くものができてしまいます。
「テンプレートからジョブを作成」リンクから作成画面にいったら、ジョブ名、リージョンを選択します。
そしてテンプレートを選択。
今回は「Pub/Sub to Text Files on Cloud Strage」(そのまま!)を選びます。
その他必須パラメータを設定する上でのポイントとしては、
- Pub/SubのTopic名は"projects〜"から始まるものにすること(トピックの詳細ページでコピーできるもの)。
- Output Directoryは日付フォーマットが使える。"gs://foo-bucket/bar-folder/YYYY/MM/DD"とかしておくとYMDのところは日付に応じて自動でフォルダを割り振ってくれる。
- "一時的なロケーション"を指定する必要あり。(まぁ、任意のバケットに適当に/tmpとか作っておけば取りえあず大丈夫かと)
4.TopicにPublishしてみる
以上までで、一通りの設定は完了。
ジョブを実行して、PubSubからメッセージをパブリッシュしてしばらくすると、CloudStorageにファイルができています。
中身にはパブリッシュしたメッセージが!
因みに、デフォルトは5分間でたまったメッセージが、それぞれ改行された上で1ファイルとしてCloudStorageに吐かれる模様。
備考・感想
- そういえばsubscriptionを作っていません。通常、Topicに対してSubscriptionがあってPubSubが構成されるのですが、今回はジョブを作成した時点で自動でsubscriptionが作られていたようです。
- 既存テンプレート以外の構成は、適宜テンプレートの実装を行う必要があります。ただし、githubにテンプレートのリポジトリがあるので、それをベースにカスタマイズすることが可能(ソースはJavaかPython)。
- 最終的にはBigQueryも絡めてやってみたいが、今回の感触でそれも難しくなさそうな感じ。