※2016年10月1日より、サービス名称が「Yahoo!ビッグデータインサイト」から「トレジャーデータサービス by IDCF」に変更となっております。
今回ご紹介することの概要とアウトプットのイメージは以下となります。 Yahoo!ビッグデータインサイト(以下「YBI」)へのデータアップロードからYBIでの集計、MariaDBへResultExportしてその結果をPentahoで閲覧する方法までをご紹介します!
はじめに
はじめまして、またはお久しぶりです、ビッグデータ戦略グループの上野です!部署名が変わりました!
梅雨で空気がまとわりつく今日この頃ですがいかがお過ごしでしょうか。
さて早速本題ですが少し前ならビッグデータ、最近だとIoTというのがバズワードとなっていると思いますが、皆さん実際にやられているでしょうか?なかなか実践出来ていないのではないでしょうか?
例えばマーケティング部門の方なら、
- 「やりたいけど、データ取得はインフラ部門にお願いしないといけない」
データ取得をお願いされた、インフラ部門、アプリケーション開発者の方なら、
- 「データは取りたいけど、保管する場所を確保しないといけないし、リソース管理が面倒だし、取得項目がころころ変わるから、対応が難しい」
ということが多いのではないでしょうか?
そういったときに、以下の特長を持つYahoo!ビッグデータインサイトの価値が出てくると思います。
- マネージドクラウドサービス
- 容量の制限がない
- スキーマレス
上記お困りの方は本ブログを読んで少しでもYahoo!ビッグデータインサイトを知って頂ければと思います。
#すいません、宣伝ですm( )m
さて今回はWebのアクセスログをYahoo!ビッグデータインサイトを利用して傾向の可視化する方法を書かせて頂きます。 しばしお付き合いをお願いします。
Yahoo!ビッグデータインサイトとは
さてそもそもYahoo!ビッグデータインサイト(以下、YBI)とはなのですが、詳細はコーポレートサイトや以前のブログに譲りますが、一言で言えば以下だと思います。
- 時系列データベース
そのため以前も書きましたが、実際の分析結果を視覚化(Visualization)するためには別途Visualizationツールを用意する必要があります。
最近のVisualizationツールではTableauが有名であり、実際にYBIを導入されている多くのお客様にも利用されています。 ただ手軽にやるにはフリーツールの方が良いと思いますので、今回はOSSであるPentahoとの連携方法についてご紹介します。
Pentahoとは
Pentaho社が提供するBI(Business intelligence)スイーツツールであり、データ統合、分析、マイニング、ダッシュボードの作成、レポートまでを行うことができるツールです。 なので一つのツールでデータ解析の全てができてしまうツールとなります。
ここまで言うとPentahoだけで充分では?と思ってしまうかもしれません。 しかし、Pentahoは結局はアプリケーションなので大規模データを扱うときはそれを保存する箱とそれを高速に分析するエンジンは自前で用意する必要があります。 その箱とエンジンを提供するのがYBIで、今回は検証がてら連携させてみたのでご紹介させて頂きます。
追記: OSSのBIツールには最近ですと、Re:dashがあり、巷では結構使えるという話なので今度試してみようと思います。
前提条件
以下前提条件となります。
- ログイン可能なCentOS7があること
手順
YBIへのSignUp
YBI SignUpページにアクセスしてemailアドレスを登録すれば、認証メールが飛んできます。 その認証メール経由でSignUpができます。 無料です!
Pentahoのインストール
CentOS7へのPentahoのインストールは、以下を参考にして頂ければと思います。
Memo: Pentaho BAサーバーインストール - Qiita
MariaDBのインストール
MariaDBのインストール方法は以下を参考にして頂ければと思います。 以下の設定で作成します。
- username: ybi
- password:${password}
- database: ybi
Memo: MariaDBのインストール/初期設定 - Qiita
YBIへのデータインポート
データの準備
今回は以下の形式のファイルをインポートさせます。 アクセスログとなります。
time date host method status agent userid
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789 2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224790 2015-02-18 10:59:50 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 6ee4d54a-331d-4f8d-ab11-076e6daa455b
データインポート
データのインポート方法は大きく分けて以下5つがあります。
- バルクインポート
- ストリーミングインポート
- SDKインポート
- ブラウザインポート
- Data Connector
Data Connectorはつい最近リリースされたものですが、これはYBIから対象のリソースにアクセス可能ならばYBI側でデータの取得から保存をやってくれるものとなります。 バルクインポートでクライアント側で行っていた処理をサーバー側でやってくれるので、クライアント側には負荷がかからずより気軽にデータをYBIにデータを溜めることができると思います。 今はS3/Riak CSだけのようですが、今後拡張していくようなので期待しています。 詳細は以下を参照してください。
(新機能)「Data Connector for Amazon S3」によるデータロード革命 - トレジャーデータ(Treasure Data)公式ブログ
追記: このブログを書いている途中にMySQLにも対応したようです。やはり開発が早いですね。
(新機能)「Data Connector for MySQL」がトレジャーデータへの定時バルクロードをクライアントレスで実現
今回はブラウザインポートでインポートします。 詳細な手順は以下を参照してください。インポート先のデータベース名はybi、テーブル名はaccessとします。
YBI - Yahoo!ビッグデータインサイト - ブラウザアップロード - Qiita
データエクスポート
YBIではクエリの処理結果を外部のサーバーに吐き出す、ResultExport機能があります。 ここでは、先ほどインポートしたデータを分析してMariaDBにエクスポートさせます。
MariaDBテーブル作成
エクスポートさせるデータを保存するためのテーブルを用意する必要があります。 MariaDB上で以下のコマンドによってテーブルを作成します。 ybiというデータベース名、accessというテーブル名で作成しています。
MariaDB [ybi]> CREATE TABLE access (access_date DateTime, count INT);
アクセスログのサマリー情報を格納するテーブルなので、access_dateでアクセスされた日付、countにアクセス数を格納出来るように定義しています。
YBI ResultExport
さてこれでYBIからMariaDBに解析結果を出力する準備が整いました。
Consoleにアクセス
Yahooǃ ビッグデータインサイト にアクセスして、メールアドレス、パスワードを入力してLog inボタンを押下してログインしてください。
クエリ画面を表示
ログイン後にサイドメニュータブのNew Queryをクリックしてクエリ画面を表示します。
クエリ記入
ここでは日々のアクセス数を抽出するクエリを記載します。
以下のように記載します。
- Database: 先ほど作成したYBI上で作成したデータベース名を入力してください。
SELECT
TD_TIME_FORMAT(time,
'yyyy-MM-dd',
'JST') access_date,
COUNT(1) COUNT
FROM
access
GROUP BY
TD_TIME_FORMAT(time,
'yyyy-MM-dd',
'JST')
終了したら、画面中央部のResult ExportのAddボタンを押下して、ResultExport設定画面を表示してください。
ResultExport設定
次にResultExport先を設定します。 以下のように設定してください。 MariaDBはMySQLと互換性がありますので、Export to
にはMySQLを指定します。
- Export to: MySQL
- Host: MariaDBをインストールしたサーバーのGlobalIPアドレス
- Username: ybi
- Password: ${password}
- Use SSL?: no checked
- Database: ybi
- Table: access
- Mode: replace
設定が完了したらUseボタンを押下して、ResultExport設定画面を閉じます。
ResultExport
さて実際にResult Exportを行います。
Runボタンを押下することで実行されます。
MariaDB Export確認
MariaDBにデータがExportされているかを以下のコマンドで確認します。
$ mysql -u${user_name} -D ${db_name} -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.41-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [ybi]>
MariaDB [ybi]> SELECT * FROM access;
+-------------+--------+
| access_date | count |
+-------------+--------+
| 2014-09-05 | 401 |
...省略
MariaDB [ybi]>
PentahoによるVisualization
さてここから先にYBIからMariaDBにResutlExportしたデータを、Pentahoで視覚化していきます。
Pentahoデータソース設定(MariaDB)
ここでPentahoから先ほどExportしたデータを参照できるように設定します。
BAサーバーにログイン
Pentahoをインストールしたサーバーに設定したGlobalIPアドレス:8080に対してブラウザでアクセスしてみてください。 アクセスすると以下のように表示されるはずです。
Login as an Evaluatorのドロップダウンをクリックして、AdministratorユーザーのGOボタンを押下してログインします。
ログインすると以下のように表示されます。
データソース設定
次にデータソースを設定します。
接続設定
Home画面のManage Data Sourcesを選択します。
次にConfigアイコンのプルダウンメニュでNew Connectionを選択します。 そうすると接続設定画面が表示されます。
以下の項目を入力してください。
- Connection Name: YBI
- Database Type: MySQL
- Access: Native (JDBC)
- Host Name: MariaDBをインストールしたサーバーのIPアドレス
- Database Name: ybi
- User Name: ybi
- Password: password
入力後Testボタンを押下してください。 以下の画面が表示されれば接続されています。
OKボタンを押下してそれぞれ閉じてください。
データソース設定
次にNew Data Sourceを選択します。
Data Source Wizardで以下の値を入力してNextボタンを押下します。
- Data Source Name: access
- Source Type: Database Table(s)
- Connection: YBI
- Create data source for: Reporting and Analysis
以下のように設定してください。設定後Finishボタンを押下することでデータソースとして登録されます。
- Schema: ybi
- Selected Table: 'ybi'.'access'
- Fact Table: 'ybi'.'access'
グラフ表示
Home画面に戻ってCreate Newボタンを押下してください。
そうすると、Analysis Reportメニュが表示されるのでこのAnalysis Reportを選択してください。
選択後にどのデータソースを使うか聞かれるので、先ほど作成した、accessというものを選択してください。
選択後にOKボタンを押下します。
表作成
さてこれからデータを色々いじることができます。 まずはフィールドリストにあるAccess dateというアイコンをドラッグして列ラベルにドロップしてください。 そしてMeasures > Countを数値フィールドにドロップしてください。 そうすると図のような表が作成されます。
グラフ描画
さて時系列データなのでどうせならグラフで見たくなります。そのときは画面右上にあるグラフアイコンをクリックしてみてください。そうすると以下のように表示されます。
グラフの種類はグラフアイコンのプルダウンメニューで選択することができます。 ここでは線グラフを選択してみます。 そうすると以下のように表示されます。
フィルタリング
ただこのままではちょっと期間が長いので2014年10月分のみを表示させたいと思います。 フィールドリストにあるAccess dateをドラッグしてフィルターフィールドにドロップしてみてください。
そうすると以下の画面が表示されます。 特定の文字列にマッチにチェックを入れて2014-10-を含むという設定にしてください。
設定後OKボタンを押下すると、以下のように2014年10月のデータのみが表示されます。
おわりに
いかがでしたでしょうか。 手順的には長かったと思いますが、YBIを利用してグラフ化する方法を理解頂けたら幸いです。 YBIには定期的な処理設定が可能ですので、MariaDBなどにエクスポートしてやればPentahoによるレポートを定期的に行うことが可能です。 是非お試しください!