- 統計解析ツール R
- データベース Mongodb
- Rとmongodbを連携させるためのRライブラリ rmongodb
- R利用のためのユーザインターフェース R Studio
インターネットのデータ -- (Spidering Tool) -- mongodb -- rmongodb -- R -- R Studio
R & R Studioのインストール
既に拡張パッケージ EPEL(Extra Packages for Enterprise Linux)を利用して入れば、Rのインストールはyumを使うだめの簡単作業だ。http://fedoraproject.org/wiki/EPEL
依存しているパッケージが20ぐらいあったような。
R Studioは、統計解析ソフトRのためのIDE(統合開発環境)だ。Rの為のEclipseやVisualStudioと言ったところか。サーバ版をインストールした。
http://rstudio.org/
# Rをインストールする # EPELを使っていることが前提 $ sudo yum install R # RStudioのrpmパッケージを取得し、インストール $ wget http://download2.rstudio.org/rstudio-server-0.96.228-x86_64.rpm $ sudo rpm -Uvh rstudio-server-0.96.228-x86_64.rpmインストールすると、サーバが起動し、起動スクリプトもセットされる。RStudioは、初期設定ポートが8787なので、8787ポートは開けてあげること。 http://yoursite.com:8787/ にアクセスするとログイン画面が表示されるはず。ユーザ情報は、Linuxユーザ情報をそのまま利用している。
rmongodb
Mongodbのインストールは、随分前にインストールしていたので、省略。yumでインストール出来たはず。コンパイルとか、随分とインストールに時間が掛かったような記憶がある。rmongodbは、Rのライブラリで、Rに、mongodbへの接続機能を追加するものだ。R本体はデータの取得先に対する機能は充実しておらず、その当たりはライブラリで頑張ってくださいと言う姿勢らしい。
githubで公開しているrmongodbは、上手くコンパイル出来なかった。CRAN(the Comprehensive R Archive Network)から取得すると上手くらしい。
# mongodbとRを接続するためのライブラリ rmongodbをインストールする # githubに配布されているものは、なぜかインストールに失敗するので、CRANから取得しインストール $ wget http://cran.r-project.org/src/contrib/rmongodb_1.0.3.tar.gz $ sudo R CMD INSTALL rmongodb_1.0.3.tar.gz
R Studioを実行してみる
まず、コマンドラインからrmongodbが動作するか確認してみた。> R # コマンドラインからRを起動
(途中省略)
> library(rmongodb) # rmongodbをロードする
rmongodb package (mongo-r-driver) loaded
Use 'help("mongo")' to get started.
R Studioから、同じ事をやってみる。
- http://yoursite.com:8787/ にアクセス
- linuxユーザでログイン
- 右下のペインのPackages タブを選択
- rmongodb にチェックを入れる
なかなか、使い勝手がよさそう。
Mongodbへのデータ登録と取得
サンプルソースをみて、Rからmongodbを利用する方法など確認してみた。# insert
mongo <- mongo.create() # 接続
if (mongo.is.connected(mongo)) { # 接続確認
buf <- mongo.bson.buffer.create() # bson用の1レコードバッファをR内に用意
mongo.bson.buffer.append(buf, "name", "baker") # レコードバッファに属性と値をセット
mongo.bson.buffer.append(buf, "age", 50L)
b <- mongo.bson.from.buffer(buf) # レコードバッファをbson形式に変更
mongo.insert(mongo, "test.people", b) # db:test, collection:peopleに追加
}
# select
mongo <- mongo.create()
if (mongo.is.connected(mongo)) {
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.append(buf, "age", 18L)
query <- mongo.bson.from.buffer(buf)
# Find the first 100 records
# in collection people of database test where age == 18
# queryの内容は、{age:18L}
# レコードコレクションに対するカーソルが提供される
cursor <- mongo.find(mongo, "test.people", query, limit=100L)
# Step though the matching records and display them
# nextメソッドで、カーソルを順に動かしていく
while (mongo.cursor.next(cursor))
print(mongo.cursor.value(cursor))
mongo.cursor.destroy(cursor) # カーソルの開放
# 現在、100件も入っていないので表示されませんが :-p
}
実際にMongodbにデータが格納されていることを、mongodbのクライアントソフトmongoで確認してみる。 # mongo (クライアントソフトから実行結果を確認してみる)
> show dbs # データベース一覧をみる
admin
error_logger
local
test
> use test # データベース test に移動
switched to db test
> show collections # 現在のデータベース内のコレクションをみる
foo
people
system.indexes
users
> db.people.find() # test.people を全件検索してみる
{ "_id" : ObjectId("4fcb042f3eee4d39039e1b87"), "name" : "baker", "age" : 50 }
>


0 件のコメント:
コメントを投稿