Rserve介紹
Rserve是一個(gè)基于TCP/IP協(xié)議的,允許R語言與其他語言通信的C/S結(jié)構(gòu)的程序,支持C/C++,Java,PHP,Python,Ruby,Nodejs等玷室。 Rserve提供遠(yuǎn)程連接,認(rèn)證,文件傳輸?shù)裙δ茏荚 N覀兛梢栽O(shè)計(jì)R做為后臺服務(wù),處理統(tǒng)計(jì)建模捎稚,數(shù)據(jù)分析,繪圖等的任務(wù)求橄。
詳細(xì)介紹請參照官方網(wǎng)站:https://rforge.net/Rserve/
Rserve安裝
Linux系統(tǒng)下建議使用root權(quán)限安裝今野。下面的內(nèi)容是依據(jù)Windows7系統(tǒng)中安裝過程進(jìn)行描述的。
進(jìn)入R語言解釋器:R
安裝命令:install.packages("Rserve")
然后安裝程序會提示我們選擇下載鏡像罐农,提示如下:
--- Please select a CRAN mirror for use in this session ---
等我們選擇了鏡像后(測試時(shí)選擇的是China(xxx))条霜,安裝程序便進(jìn)行下載安裝,最終會輸出如下的信息(Linux下的輸出信息或有不同):
說明Rserve安裝成功涵亏,安裝路徑為:%R_HOME%libraryRserve目錄宰睡。
啟動Rserve服務(wù)
在Windows命令窗口進(jìn)入R_HOMElibraryRservelibsi386目錄中執(zhí)行如下命令(我的Windows7是32位的,如果是64位系統(tǒng)對應(yīng)目錄為R_HOMElibraryRservelibsx64):
R將作出如下應(yīng)答:
說明Rserve啟動成功(端口6311)气筋,可以進(jìn)行連接測試了拆内。
上面的啟動命令使用的本地模式,如果想遠(yuǎn)程連接需要增加參數(shù) –RS-enable-remote
即啟動命令為:
Java遠(yuǎn)程連接Rserve
下載依賴jar包宠默,地址:http://www.rforge.net/Rserve/files/
共兩個(gè)jar包麸恍,下載完成后將它們加入到項(xiàng)目的classpath中即可:
- ? REngine.jar
- ? RserveEngine.jar
也可以到Rserve安裝目錄中尋找,比如:R_HOME libraryRservejava目錄中就有相關(guān)jar包,名字略有不同抹沪,經(jīng)測試可以使用:
簡單的測試代碼:
測試可以通過刻肄,程序?qū)⑤敵鯮語言版本信息及10個(gè)Double類型的數(shù)字。
Java遠(yuǎn)程執(zhí)行R腳本
上面的示例只是執(zhí)行R命令融欧,但如果我們在服務(wù)器上放置R腳本又該如何執(zhí)行該腳本或調(diào)用其中的函數(shù)呢敏弃?
有兩種方法可以完成上面的問題。
假如我們定義了一個(gè)R腳本area.R噪馏,其中定義了一個(gè)方法area麦到,該方法接收一個(gè)半徑值然后計(jì)算對應(yīng)面積并返回,腳本內(nèi)容非常簡單:
下面描述一下如何調(diào)用這個(gè)腳本中的area函數(shù)逝薪,并獲取其返回值隅要。
第一種方法就是直接用source函數(shù)將area.R腳本加載上來,然后就可以像調(diào)用R語言內(nèi)置命令/函數(shù)一樣調(diào)用腳本中的area方法了董济。這樣做有一個(gè)缺點(diǎn)就是每建立一次Java與R之間的連接就需要調(diào)用source函數(shù)一次步清。
示例代碼:
代碼測試通過。
另一種調(diào)用R腳本的方法是通過Rserv.conf配置文件虏肾,該文件路徑為/etc/Rserv.conf廓啊,如果文件不存在則創(chuàng)建一個(gè)新的,然后在文件中添加如下的代碼:
然后重新啟動Rserve服務(wù)即可封豪。
使用這種方式Java測試代碼需要去掉source語句這一行谴轮,即:
其它不變,經(jīng)測試成功吹埠。
- 注1:第二種方式只在Linux下采用第步,Win平臺對應(yīng)的方法沒有找到。
另外:有些人說配置文件為Rserve.conf缘琅,但我在122的/etc下找到的是Rserv.conf粘都,不管是哪一個(gè)文件(甚至兩者都不是,隨便命名一個(gè))刷袍,只要執(zhí)行下面命令告訴Rserve配置文件是哪一個(gè)即可(需要重啟Rserve):
參考資料
- https://rforge.net/Rserve/example.html
- http://blog.fens.me/r-rserve-java/
- http://www.studytrails.com/R/RServe/RServe-Source-R-File.jsp
- http://stackoverflow.com/questions/13553397/sourcing-r-files-only-once-on-rserve
轉(zhuǎn)自:http://blog.csdn.net/zhyh1986/article/details/13074395--------------------- 本文來自 紅豆和綠豆 的CSDN 博客 翩隧,全文地址請點(diǎn)擊:https://blog.csdn.net/u011955252/article/details/64904906?utm_source=copy