Docker上でCojureのデータ解析ツールGorilla REPLを動かす
前書き
Gorilla REPLはClojure製のノートブックスタイルのデータ解析ツールです。
Clojure版のiPython Notebookと言った方がイメージしやすいでしょうか。
Docker imageを作りましたので、今回はCoreOS上で動かすやり方を説明します。
準備
以下のインストールが事前に必要です。
CoreOSの起動
CoreOSの公式Vagrantfileを使用します。
デフォルトだと1台だけ起動します。
git clone https://github.com/coreos/coreos-vagrant/
cd coreos-vagrant
vagrant up
コンテナの起動
あとはログインして以下のコンテナを起動するだけです。
naohisa/incanter-gorilla
docker run --name some-gorilla -p 4242:4242 -p 80:8080 -d naohisa/incanter-gorilla
Notebookを開く
特に設定を変更していなければ以下のURLをブラウザで開けばアクセスできます。
http://172.17.8.101/worksheet.html
leiningenのreplだと以下のコマンドで開けます。(nREPL等でもエンドポイントは一緒)
lein repl :connect 172.17.8.101:4242
以下のように表示されれば成功です。
データベースから情報を引っ張る
まずはnamespaceとライブラリの読み込みをするため、以下を入力してshift + enter
します。
(ns divine-meadow
(:require [clojure.java.jdbc :as jdbc])
(:use [incanter core stats charts io datasets]
[incanter-gorilla render]))
データベースへの接続情報を以下のような感じで定義しておきます。
(def db-info
{ :subprotocol "mysql"
:subname "//[database host]:3306/database"
:user "user_name"
:password "password"})
jdbc経由でデータをとって来るには以下のようにします。
(def hoge-data
(jdbc/query db-info
["select * from hoge where id > ? " "10"]))))
この場合、hoge-dataは遅延シーケンスでデータ的にはmapです。
これをIncanterで処理できるようにdatasetに変換します。
(def hoge-dataset
(to-dataset hoge-data))
あとは以下のような感じで平均値を求めたり、グラフの描画もできます。
(mean ($ :price ($where {:year {= 2015}} hoge-dataset)))
(chart-view
(scatter-plot :price :amount :group-by :month :data hoge-dataset))
現状の課題
- このコンテナイメージはGorilla REPLの実行ユーザがrootなので、いずれ起動用のユーザを追加して実行するように修正したいです。
- 起動時に任意のライブラリの読み込みが指定できるようにしたいです。
Author And Source
この問題について(Docker上でCojureのデータ解析ツールGorilla REPLを動かす), 我々は、より多くの情報をここで見つけました https://qiita.com/hakuro/items/1ec354cc6b2d46bdf8ca著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .