目次
Google CloudDatalabとは
Cloud DatalabとはJupyterをベースとしたデータ分析を対話形式でかつWeb上で行うことが出来るシェル環境です。また、ソースコードやSQL、実行結果、テキスト、画像等を「1つのノートブック」としてまとめて扱えることが特徴です。
Datalabの環境はAppEngine+Flexible Environment上(machine typeはn1-standard-1)で動作する為、Flexible Environmentと同様の費用が課せられることになります。
※現在、Flexible EnvironmentはBeta版である為、今後改定されると思いますが現在はVMごとにGCEと同様の費用感になっているようです。
Jupyterとは
上記にもある通り、Jupyterを使うことによってデータの分析、可視化、共有等を1つのノードブックの上で完結できます。Jupyterの詳しい活用方法については以下の記事に良くまとまっているので、こちらを参考にしてみてください。
現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ http://techlife.cookpad.com/entry/write-once-share-anywhare
Jupyter から見た Treasure Data の使い方
http://qiita.com/k24d/items/d6e8b8200108353b5354
TreasureDataとPandasとJupyterでインタラクティブにデータを可視化する。
http://qiita.com/toru-takahashi/items/7c4320df5b77e4b6e2a5
本記事では基本的なDatalabの起動から、BigQueryのサンプルデータを用いた検索、CloudStorageからのデータインポート&エクスポートを紹介します。
CloudDatalabの起動
※本記事ではGCPプロジェクトの作成方法等は割愛します。作成がお済みでない方は以下を参考にプロジェクトを作成してください
1. https://datalab.cloud.google.com へアクセス
以下の画面に遷移します。
2.「Sign-in to Start」ボタンからサインイン
プロジェクトの選択画面が表示されます。
3.プロジェクトの選択
既存のプロジェクト一覧が表示されますのでdatalabをデプロイするプロジェクトを選択してください。
まだデプロイしていない場合は画像のようにDeployボタンのみ有効になっています。
4.デプロイ
Deployをしてしばらくすると(10分~15分程)、以下のように他のボタンも有効になります。
上記画像にある通りDeployすると…
- AppEngineの「datalab」モジュール
- 「datalab」というネットワークを持つComputeEngineのインスタンス
- CloudRepositoryに「datalab」というブランチ
の3つが新たに指定したプロジェクト内に作成されます。
実際にGoogle Cloud ConsoleのCompute Engineの画面で確認すると、
Flexible Environment(旧Managed VMs)のインスタンスが起動していることが分かります。
※注意
GCEのインスタンスの削除のみ行うと、10分くらいすると再度GCEインスタンスが立ち上がり、課金状態は継続されます。インスタンスを完全に削除する為には、AppEngine→サービスの画面からサービス「datalab」を削除する必要があります。
Startボタンを押下すると、Datalabのページに遷移します。
ここで重要となるのはNotebookと呼ばれる、テキストやソースコード、グラフ等をひとまとめにしたファイルです。上図にはdatalabというディレクトリと共にdatalab-sample.ipynb、Hello World.ipynbという2つのNotebookが表示されています。
Notebookの作成内容の記述
Notebookのボタンをクリックすると新しくNotebookが作成されます。
使用するサービスの宣言
まずはこのNotebook内で使用するサービス(注1)を以下のように宣言します。
今回はBigqueryのみ使用するのでこのように記述します。
このように宣言すると、Datalab側で用意されているBigQueryのAPIをbq.Query()のように利用できるようになります。
早速ですがBigQueryにデフォルトで用意されているdataset(bigquery-public-data:samples)に対してクエリを実行してみたいと思います。
(注1)DatalabではデフォルトでGoogleCloudStorageや数値計算で有名なPythonのライブラリ「numpy」、データ解析に用いられる「pandas」といった外部のライブラリが利用できます。
また、デフォルトで使用出来ないものでも以下のようにaptやpip(pythonのパッケージ管理システム)を利用してライブラリをインストールすることも可能です。
クエリの定義と実行
dataset内のwikipediaテーブルに対してtitleに「Japan」が含まれるレコードを10件取得し、その結果を表示しています。12GBのデータに対する検索結果が0.9秒で返ってきていることが分かります。
グラフ表示
以下のようにChart APIを利用して検索結果をグラフとして表示することも出来ます。
検索結果からレコード数とクエリの取得
また、検索結果からレコード数と検索に使用したクエリを取得することも出来ます。
プロジェクト内データセット・テーブル情報の参照
データセットの一覧やテーブル一覧、スキーマ情報等も参照可能です。
データセット・テーブルの新規作成
notebookから直接同プロジェクトのBigQueryにデータセットやテーブルを作成することも出来ます。
データセット「sample」と「name, value, flag」をスキーマに持ったテーブル「sample_table」が作成出来ました。
データのインポート
次に、CloudStorageに置いてあるCSVファイルのデータをインポートしてみます。
まず、Storage上にインポート用のcsvファイルを用意しました。内容は以下の通りです。?
このcsvファイルのデータを先程作成したテーブルにインポートします。
Job IDが表示されていればとりあえずはOKです。テーブルの中身を確認してみましょう。
先ほど確認した3つのレコードが正しくインポートされていることが分かりますね。
データのエクスポート
次にテーブル内のデータをCloudStorageにエクスポートしてみます。
export_test.csvというファイル名でCloudStorageにエクスポートすることが出来ました。
まとめ
今回はDatalabの起動から簡単なクエリの実行、CloudStorage→BigQueryのデータインポート、BigQuery→CloudStorageのデータエクスポートを試してみました。SQLの知識は多少必要になりますが、エンジニア以外の方でもそれほど抵抗なくDatalabを通してデータ分析を行えそうだという印象をお持ちになられた方も多いのではないでしょうか?今回はあまり触れられていませんがテキストも含めて分析の過程を保存、バージョン管理ができる点もデータ分析においては強みの1つになるでしょう。
データの集約先としてGoogleのサービス(BigQueryやCloudStorage等)を利用している場合には分析ツールの候補の一つとして利用を検討してみてはいかがでしょうか?
データ分析等でお困りでしたら、クラウドエース(Cloud Ace)までお問い合わせ下さい!