- 統計解析ツール 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 件のコメント:
コメントを投稿