LoginSignup
0
1

More than 3 years have passed since last update.

【GCP】DataFlowを利用してDataStoreにデータを登録

Posted at

はじめに

GCPのデータパイプラインを構築するプロダクトである、Dataflowを利用して
DataStoreにデータを登録する方法を共有します。
最初に、以下の公式ドキュメントより何となくで構わないのでDataflowについて
ご理解をお願いします。
https://cloud.google.com/solutions/smart-analytics?hl=ja

前提

  • Cloud Storageにファイルを保存できること
  • GCPのコンソールからDataStoreの簡単な操作ができること
  • CloudShellやSDKを利用してコマンドを実行できること

できるようになること

  • DataStoreにバッチ形式でデータを登録できるようになる
  • とりあえずDataFlowが動かせるようになる

テンプレートの準備

今回は、自分でApacheBeamのパイプラインを作成しません。
あらかじめ、Googleが準備しているテンプレートを利用します。
大まかに以下の手順となります。

  1. GCPコンソールのDataflowのページより、「テンプレートよりジョブを作成」を選択
  2. Dataflowテンプレートに「Text Files on Cloud Storage to Datastore」を選択 その他のパラメータは適宜、選択入力してください。
  3. 画面下部の「同等のRESTまたはコマンドライン」というリンクから実行コマンドを取得 後の実行時に取得したコマンドを利用します。

取り込みファイルの準備

Inputに利用するファイルを作成します。
以下の形式で、レコードを任意の件数作ってください。
JSONの形式詳細は、以下のURLを参照ください。
https://cloud.google.com/datastore/docs/reference/data/rest/v1/Entity?hl=ja

input.json
{"key": {"path":[{"kind":"test", "name":"VOg6lTbC2h"}]}, "properties": { "s": {"stringValue": "string"} }},

注意点

  • 「name」は原則一意の値となること(大量データ作成時は厳密でなくても良いです)
  • 文字コードは「UTF-8」であること

実行

GCPのコンソールで取得していたコマンドを実行します。
CloudShellかSDKを利用してください。
以下がコマンドの実行例です。

gcloud dataflow jobs run testText2Datastore --gcs-location gs://dataflow-templates-asia-northeast1/latest/GCS_Text_to_Datastore --region asia-northeast1 --staging-location gs://test-20200919/temp/ --parameters textReadPattern=gs://test-20200919/test3.json,datastoreWriteProjectId=edu-pubsub,errorWritePath=gs://test-20200919/error/failure.txt

実行結果確認

確認ポイントは2つです。

  • DataFlowのコンソールから正常終了を確認
  • DataStoreにデータが登録されていることを確認

感想

一番時間がかかったのは、取り込みファイルの準備です。
データ構造を理解するのに、試行錯誤をしました。
一般的な、CSVやTSVからデータをInportするには自分でテンプレートを開発するしか
無さそうです。このテンプレートは異なるプロジェクトのDatastoreのコレクションを
連携する時に利用できそうです。

最後に

DataStoreはDBプロダクトの中で唯一無料枠が設定されており、一番安価な
プロダクトです。そのため、コストを重視するプロジェクトで利用する機会
が増えると思います。一方、情報が無く利用に苦戦することが結構ありました。
一助になればと思います。

次は、Dataflowの特徴であるオートスケールとパフォーマンスについて共有
できればと思います。

0
1
0

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
0
1