Apache Prestoを使ってApache Zeppelinから分散クエリを投げて可視化する
Apache Prestoとは
Treasure Dataさんから非常に詳しい記事があるので紹介させていただきます。
Apache Zeppelinとは
以下の記事で以前、解説させていただきました。
記事の目的
以前の記事では問題がありました。
今回は完全に個人的なプライベートLine Botだったので捌くデータも数件/day
のような感じでした。
一年間運用しても、データの数はそんなに多くありません。
しかし、もし卒業して、会社に勤めたらそうはいかないかもしれません。
そのときに大量にデータがあると、クエリを投げても可視化する環境があっても取得までに時間がかかってしまうかもしれません。
そういうときにApache Prestofで分散クエリを投げれば、処理速度はスケールアウトすることができて、ニアリアルタイムで可視化できます。
アーキテクチャ
以下のようにアーキテクチャがあります。
Line Botの部分は省略しています。
インストール
Apache Prestoのイントール方法は以下の記事で解説しています。
また、Apache Zeppelinも以下の記事でインストールまで解説しています。
セットアップ
1. Apache PrestoのMySQLへの接続
MySQLが動作していることを確認してください。
$ sudo mysql.server status SUCCESS! MySQL running (39772)
まず、接続するにはcatalogを作らないといけません。
PRESTO_HOME/etc
の中にmysql.properties
で設定を書き込んでいきます。
以下のように書き込んでください。
connector.name=mysql connection-url=jdbc:mysql://localhost:3306 connection-user=root connection-password=secret
それでは接続してみます。
まず、Prestoサーバーを起動させてください。
brew services start presto
以下のようにhttp://localhost:8080/ui
で確認できれば大丈夫です。
$ presto --catalog mysql --schema yamashita_bank presto:yamashita_bank>
ここで、schema
はデータベース名です。
2. Apache ZeppelinのApache Prestoへの接続
次にApache Zeppelinを Apache Prestoに接続します。
まず、Apache Zeppelinを起動させます。
そして、Interpreterを定義しないといけません。
以下のように設定します。
デフォルトではPrestoのCluster Masterはポートは8089
です。
これでInterpretorも作成できました。
分散クエリを投げて可視化してみる
実際にInterpretorを使ってApache Zeppelinで可視化してみます。
以下のようにInterpretorとSQLを書いて実行してみます。
同様の結果です。
まとめ
いとも簡単に分散クエリによって可視化できるのでよい。
次は、tier storage
を挑戦してみたい。Apache KafkaとMySQLを同時にクエリを投げてみたいと思います。