Cloud Functionsで、GCSにアップロードしたCSVデータをBigQueryに読み込む

GCP
Nishipy
AWSしか触ったことのない私が、最近GCP(Google Cloud Platform)を使う機会があったのでメモします。Cloud Functionsのチュートリアルとしてご覧ください。

1. やりたいこと

  • Cloud Storageにデータをアップロード
  • データアップロードをトリガーとしてCloud Functions起動
  • Cloud Functionsにより、データをBigQueryにインポート

2. 予備知識の復習

一般的なクラウドサービスについては、↓の記事にも書いています。

知っていて当然?XaaSで打線を組んでみた
NishipyXaaSで打線組んでみた。異議は、Twitter(@iamnishipy)までどうぞ!!1. はじめに巷にあふれるXaaS。X as a Serviceの略です。ここで言うXは、たぶん数学とかによく出てくるあの...(続く)

Cloud Storage

オブジェクトストレージのクラウドサービスであり、AWSで言う所のS3です。
詳細は、下記リンクを参照ください。

Cloud Storage  |  Google Cloud
Object storage for companies of all sizes. Secure, durable, and with low latency. Store any amount of data. Retrieve it as often as you’d like.

Cloud Functions

GCPの提供するFaaSであり、AWSで言う所のLambdaです。
イベントドリブンのサーバーレスアーキテクチャを実現できます。
詳細は、下記リンクを参照ください。

Cloud Functions  |  Google Cloud
サーバー管理なしでコードを実行するためのスケーラブルな従量課金制 Functions as a Service(FaaS)。

BigQuery

データウェアハウスのクラウドサービスであり、AWSで言う所のAthenaだと思います。

BigQuery: クラウド データ ウェアハウス  |  Google Cloud
BigQuery は、ユーザーがビッグデータから十分な情報を得てビジネス上の意思決定を行えるように設計された、サーバーレスでスケーラビリティと費用対効果が高いデータ ウェアハウスです。

3. やってみる

Cloud Storageバケットの用意

Cloud Storageでは、S3と同様にバケットと呼ばれるデータの入れ物を作成します。
データへのアクセス権限の設定を省略するために、今回はバケットをインターネット上に公開することにします。

  • バケットの作成

RegionalまたはMulti-Regionalを選択して、作成します。


  • バケットの公開
    下記の手順で、バケットをインターネットに公開します。

    • 権限タブからユーザの追加を選択

    • 「allUser」に対して、ストレージ閲覧ロールを付与

    • 公開と表示されていることを確認

Cloud Functionsの設定

Cloud Functionsに関数をデプロイします。トリガーには、Cloud Storageのイベントを選択します。

  • 各種設定項目を埋める

以下のように、値を入れます。

# 設定項目
1 名前 任意
2 割り当てられるメモリ 任意(最大2GB)
3 トリガー Cloud Storage
4 イベントタイプ ファイナライズ/作成
5 バケット [前章で作成したバケット]
  • requirements.txtを書く

関数の実行に必要なパッケージとバージョンをrequirements.txtに書いておきます。

  • main.pyを書く

あとは、main.pyにデプロイする関数を書くだけです。今回はランタイムとして、Python3.7を利用します。
[YOUR PROJECT ID]および[YOUR DATASET ID]は既存のものを指定します。

関数の入力データとなるdatacontextの説明は、下記リンクにあります。

Objects  |  Cloud Storage  |  Google Cloud

また、Google Cloud Client Library for Pythonのリファレンスはこちらです。

BigQueryの設定

main.pyの変数に定義した名前のデータセットを作っておきます。
他は特にやることはありません。

4. 最後に

今回書いた関数は、GitHubにあげています。あわせてご覧ください。

nishipy/CloudFunctions
Contribute to nishipy/CloudFunctions development by creating an account on GitHub.

今後は、BigQueryに読み込んだデータを、GCPの他のサービスと連携させていきたいと思います。
追記:続きはこちら。

BigQueryに読み込んだTwitterデータを、Datalabで分析・可視化する
NishipyAWSしか触ったことのない私が、BigQueryに読み込んだデータを、Google Datalabを用いて可視化してみます。1. やりたいことBigQueryにデータを読み込み(前回やった)BIgQuery上...(続く)


以上.

コメント