Apache ZeppelinでLine Botのデータを可視化する
本記事
Apache Zeppelinを実際に触ってみて、動作や運用条件の雰囲気を掴みたいので、そのための備忘録である。
実際に動かしているアプリケーションで使ってみる。
注意
Apache Zeppelinとなると、Apache Hadoopなどに対して使う人が多いのではないかと思いますが、あくまでもMySQL環境で試してみます。
Line Botアプリケーション
実際のアプリケーションは以下のように簡単で、誰かと一ヶ月の使った額を記録し、決算したりするものです。
実際のメタデータを見せることはプライバシーの観点から控えさせていただきますが、私の家庭内で使うものなのでテーブルは非常に簡単で記録用のrecords
テーブルしかありません。
構成
以下のような構成になっています。
Apache Zeppelinの特徴、コンセプト
やはり、アーキテクチャやコンセプトを知らずにビルトしてチュートリアルを走らせても理解できないと思ったので公式ページをみてやっていこうかなと思います。
特徴
Apache Zeppelin以下の特徴があります。 (注意: Zeppelin内での「ノートブック」はjupyter notebookの概念と似ています)
多様な目的に使えるノートブックである
- データ取得
- データ調査
- データ解析
- データ可視化、統合
いろんなバックエンドをサポートしている
- Apache Sparkも
- Apache Sparkも
リッチなデータ可視化
- ダイナミックフォーム
- ノートブック共有機能
MacでApache Zeppelinデーモンを起動する
以下のように検索して、インストールします。
brew search zeppelin ==> Formulae apache-zeppelin brew install apache-zeppelin
そして、インストールされたディレクトリに移動します。
私のバージョンでは0.8.0
だったのでZEPPELIN_HOME
となる以下のパスに移動します。
cd /usr/local/Cellar/apache-zeppelin/0.8.0/libexec
すると以下のディレクトリ構成になっています。
. ├── bin ├── conf ├── interpreter ├── lib ├── licenses ├── notebook └── zeppelin-web-0.8.0.war
まず、重要なのは設定ファイルが入っているconf
ディレクトリで、以下のようになっています。
./conf ├── configuration.xsl ├── interpreter-list ├── log4j.properties ├── log4j_yarn_cluster.properties ├── shiro.ini.template ├── zeppelin-env.cmd.template ├── zeppelin-env.sh.template └── zeppelin-site.xml.template
主な設定項目はzeppelin-site.xml.template
になります。
しかし、このままでは反映されないため、.template
を除去します。
cp zeppelin-site.xml.template zeppelin-site.xml
私は普段からApache Nifi, Storm, Vue.js
などデフォルトポートが8080
のものを多く使うので、ポートだけ先にちゃっと変更しとこうと思います。
そして作ったzeppelin-site.xml
の中に以下の設定タグがあるので設定し、ポート番号8092
で接続します。
... <property> <name>zeppelin.server.port</name> <value>8092</value> <description>Server port.</description> </property> ...
ポートを変更したら起動してみましょう。
bin/zeppelin-daemon.sh start
Web UIで確認してみます http://localhost:8092 がURLとなります。
以下の画面が見れれば正常に起動できています。
Web UIで操作する
非常に簡潔なWebUIで操作することが可能です。
また、ここで見られるNotebookはZEPPELIN_HOME/notebook
の中にjson形式で
保存されています。
InterpreterをMySQL用に作成する
Interpreterはデフォルトでは以下のような項目しかなくて、MySQLを直接すぐ使うことはできません。
なのでInterpreterを追加します。 以下のコマンドでInterpreter設定画面を開いてください。
そしてCreate
を押します。
すると以下の画面が出るかと思います。
そして以下の設定項目を打ち込みます。
そしてSave
を押してください。
Notebookを作成してBindする
以下の項目で設定してください。
すると空白のノートブックができます。
そして、左上の歯車のマークでInterpreterが正しくバインディングされているか確認します。
そして、次からコーディングに移ります。
コードを書いて可視化する
まず、冒頭に%INTERPRITER_NAME
として書きます。
私だと%mysql
と書きます。すると、そのままSQL文を書くことができます。
必要な操作は以下のものです。
shift+enter
: 実行する
たとえば
%mysql show databases;
とすると以下のようになります。
csv
でアウトプットできたり、いろんな種類のグラフで可視化することができます。
ここでは、消費金額を表示しました。
いろんなグラフで表示する
そのままではBar Graph
などは以下のように出力は何もでません。
ここで設定タブのsettings
を押してkey, valueを設定すると見ることができます。
以下のように可視化できると思います。
例として、円グラフを出力して見ます。