※2016年10月1日より、サービス名称が「Yahoo!ビッグデータインサイト」から「トレジャーデータサービス by IDCF」に変更となっております。
今回は前回に引き続いてのYahoo!ビッグデータインサイトネタとなります。 前回はデータをアップロードするまでを記載したので、今回はクエリを実行して実行結果を保存するまでを記載します。
前回の「Yahoo!ビッグデータインサイトを使ってみた」に記載したのですが、Yahoo!ビッグデータインサイトは解析基盤であって、SQLライクなクエリを受け取って分散エンジンを使って解析を行うのが主な機能となります。WebConsoleで解析結果を共有することはできなくはないですが、Visualiztion(視覚化)やクラスタ分析などの高度な統計解析は苦手であり、その分野は他のツールを利用するのが良いのかなと思います。
そのためには解析結果を外部に出力する必要がありますが、そのインターフェースはTreasureData社が随時作成しており、MySQLやPostgreSQLやオブジェクトストレージなどに簡単に出力させることができます。
MySQLやPostgreSQLに出力する場合はスイッチやルータによるルーティング設定が必要なので、今回は内部サーバーに比べて比較的容易に準備と設定ができるGoogleSpreadSheetに解析結果を出力する方法をご紹介します。
まずはじめに
まずはYahoo!ビッグデータインサイトのアカウントをSignUpページで取得します。 取得方法は前回書いた「Yahoo!ビッグデータインサイトを使ってみた」を参照してください。
次にGoogleアカウントを取得します。方法は・・・多分分かると思いますので割愛します。
今回やること
今回やることは次の二つとなります。
- WebConsole経由で解析結果をGoogleSpreadSheetに出力する
- CLI(Command Line Interface)を利用して解析結果をGoogleSpreadSheetに出力する
今回利用する環境はIDCフロンティアが提供するセルフクラウドで作成したVM(Ubuntu 12.04)となりますが、もちろん他の環境でも動くと思いますので是非お試しください。
それでは始めてみましょう!
注:ここではCLIがインストールされていることを前提とします。インストール方法は、「Yahoo!ビッグデータインサイトを使ってみた」を参照してください。
Googleアプリ固有パスワード取得
こちらは2段階認証プロセスを設定している方は実行してください
Googleアカウントで2段階認証プロセスを設定している場合は、Yahoo!ビッグデータインサイトはアカウントのパスワードでGoogleのリソースにアクセスすることができません。 アクセスするためにはGoogleアプリ固有パスワードというものを取得する必要があります。
まずはGoogleのアカウント詳細ページにアクセスします。
セキュリティタブを選択して、アプリパスワード > 設定ボタンを押してアプリパスワード設定画面に遷移します。
端末を選択プルダウンメニュで、その他を選択します。
名前は適当なものを入力してください。ここではYahoo!ビッグデータインサイトと入力しています。 入力後生成ボタンを押します。
そうするとアプリ固有パスワードが表示されます。 これは後で利用するので記録しておいてください。
解析結果の出力先SpreadSheetの準備
解析結果を出力するSpreadSheetを作成しておきます。 ここではwww_accessという空のSpreadSheetを用意しています。
出力してみる
さて準備が整ったので解析結果を準備したGoogleSpreadSheetに出力してみます。 まずはWebConsoleで試してみます。 SignInページにアクセスして、ログインします。
次にNew QueryタブをクリックしてNew Query画面を表示させます。
ここでクエリの設定をします。 今回はYahoo!ビッグデータインサイトにデフォルトで存在するsample_dbのwww_accessというテーブル内のレスポンスコードが200以外のレコードを検索しています。
次にクエリ結果の出力先の設定をします。
Result Export > Export result to > Google Spreadsheetを選択して、Result Location設定をします。 Export typeにGoogle Spreadsheetを選択して、Email、PasswordにGoogleアカウントのEmailアドレスとパスワードを入力してCreateボタンを押します。
2段階認証プロセスを設定している方はGoogleアプリ固有パスワードを設定してください。
次にSpreadSheet名とワークシート名を入力します。 Spreadsheetに'www_access'、Worksheetに'error'を入力します。 これで準備が整いました。Runボタンを押すことでJobを実行します。
問題ない場合はSuccessと表示されJobは終了するはずです。
Job終了後、先ほど作成したSpreadSheetにアクセスしてみます。正常ならばerrorシートが作成されて、レコードが次のように出力されているはずです。
CLIを利用する場合は次のコマンドで同様のことができますのでお試しください。
$ td query --result 'gspreadsheet://${account}:${password}@gmail.com/hogehoge/test6' -w -d sample_db "SELECT * FROM www_access WHERE code != 200"
${email}にはGoogleアカウントの@以前を入力してください。
おしまいに
いかがでしたでしょうか。 結構簡単にGoogleSpreadSheetに解析結果を出力できることを確認していただけたかなと勝手に思っています。
とりあえず大量のログなどのデータをYahoo!ビッグデータインサイトに放り込んでいただき、ある期間のデータ、またはある特定のデータ、例えば今回のようなエラーデータをGoogleSpreadSheetに出力してもらって、あとはSpreadSheetでデータを解析してみたり、情報を共有するという使い方もありかなと思います。
是非お試しください! それでは!