国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用Rserve實現(xiàn)Java調(diào)用R腳本

2019-09-10 07:22:44向模軍岐世峰
現(xiàn)代信息科技 2019年7期

向模軍 岐世峰

摘? 要:Java調(diào)用R,是彌補Java缺乏數(shù)據(jù)分析和可視化能力的一種解決方案,從而構(gòu)建應用型和分析性相結(jié)合的系統(tǒng)。文章給出了三種Java調(diào)用R腳本的途徑,即:進程方式、嵌入式模式JRI、遠程調(diào)用模式Rserve,研究了它們的實現(xiàn)機制,給出了相應的編程方法,在實際應用中推薦使用Rserve遠程調(diào)用模式。

關鍵詞:Java;R;Rserve;JRI

中圖分類號:TP312.2? ? ? 文獻標識碼:A 文章編號:2096-4706(2019)07-0090-03

Abstract:Java Call R,a solution to compensate for Java lack of data analysis and visualization capability,so as to build systems that combine application and analysis. This paper presents three ways of Java calling R script,namely:process mode,embedded mode JRI and remote mode Rserve. It studies their implementation mechanism,gives the corresponding programming method,and recommends using Rserver remote mode in practical application.

Keywords:Java;R;Rserve;JRI

0? 引? 言

Java作為主流的應用軟件開發(fā)語言,極好地實現(xiàn)了面向?qū)ο罄碚?,已?jīng)被廣泛應用到各種項目中,但Java缺乏數(shù)據(jù)分析以及可視化的能力。R是集統(tǒng)計分析與圖形顯示于一體的編程語言,可以用來進行機器學習,數(shù)據(jù)挖掘和數(shù)據(jù)可視化。Java和R,兩者天然具有整合的需要,可以互相取長補短,Java負責系統(tǒng)的構(gòu)建,R用來做分析引擎,通過整合,將R的數(shù)據(jù)分析結(jié)果在Java應用程序中展現(xiàn),從而實現(xiàn)應用型和分析性相結(jié)合的系統(tǒng)。

1? 異構(gòu)語言的相互調(diào)用

需要說明的是,在微服務架構(gòu)大行其道的今天,不應該提倡程序之間的相互調(diào)用,因為增加了耦合復雜度,而且相互調(diào)用的效率肯定不高。但或許是由于歷史原因,或許是由于特定條件,需要異構(gòu)語言的交互訪問,需要優(yōu)勢互補的混合編程,各種開發(fā)環(huán)境也提供了插件、程序包、接口等工具或技術來適應這種情況,比如Java與C++之間可以通過JNI來實現(xiàn),Java與Python之間可以通過Jython來實現(xiàn)。

除此之外,也可以采用“輪詢”方式實現(xiàn)相互調(diào)用,將參數(shù)標準化后,保存在共享存儲中,兩種不同語言的內(nèi)存進程,一方寫數(shù)據(jù),一方讀數(shù)據(jù),輪回進行,這應該是最簡單的實現(xiàn)方式。

“輪詢”方式效率偏低,高級語言紛紛支持Socket通信。把需要傳遞的參數(shù),以Socket報文方式發(fā)送到服務端,服務端執(zhí)行完成后,再把返回結(jié)果以報文方式發(fā)送給調(diào)用端,這種Socket Server/Client方式也是通用的。

由于Socket套接字長度有限制,無法適用于更加復雜的場合,故而一種跨編程語言和跨操作系統(tǒng)平臺的遠程調(diào)用技術Web Service出現(xiàn)了。利用這一技術,只要按照規(guī)范就可以實現(xiàn)跨語言調(diào)用,調(diào)用使用的是HTTP協(xié)議,傳輸?shù)臄?shù)據(jù)格式是XML,無須借助第三方就可實現(xiàn)數(shù)據(jù)交互等。

2? Java調(diào)用R腳本

Java很適合開發(fā)應用系統(tǒng),但統(tǒng)計分析生成圖表非其所長,如果Java應用系統(tǒng)需要進行大量的統(tǒng)計并且可視化,調(diào)用R是一種很好的方式。一個大數(shù)據(jù)系統(tǒng)有這么一種應用需求:在Web界面上展示統(tǒng)計分析圖形,一種比較好的解決方案:Web部分用Java/JSP技術來實現(xiàn),用R來做數(shù)據(jù)分析生成圖形,通過整合,實現(xiàn)Java對R的調(diào)用,如圖1所示。

2.1? 進程方式

R開發(fā)環(huán)境提供了一個可執(zhí)行文件Rscript.exe,可以在OS終端運行R腳本。命令格式:Rscript <文件路徑 R腳本文件名> [參數(shù)列表]。注意所調(diào)用的*.R文件應該在R的工作目錄下,另外就是參數(shù)之間用空格隔開。

在Java中,如果需要調(diào)用系統(tǒng)外部的某個程序或命令,可以用Runtime.exec()來實現(xiàn),它會生成一個新的進程去運行,這樣說來,用Rscript執(zhí)行文件的操作,可以移到Java代碼中實現(xiàn)。代碼如下:

使用JRI,需要提前做好三步:

(1)R中需要安裝rJava包:installed.packages ("rJava")。

(2)配置系統(tǒng)變量Path、Classpath:Path添加jri.DLL文件路徑,Classpath添加JRI.jar文件路徑。

(3)Java工程中引入JRI.jar、JRIEngine.jar、REngine.jar。

在rJava包安裝目錄下的jri/examples里有現(xiàn)成的例子,加入Java項目測試,如果執(zhí)行成功,表示配置完成。

2.3? 遠程調(diào)用模式Rserve

Rserve是一個基于TCP/IP協(xié)議的,允許其他語言與R語言通信的C/S結(jié)構(gòu)的程序包,支持C/C++、PHP、Java、Python等。

如果要使用Rserve,需要先完成以下工作:

(1)安裝Rserve:install.packages("Rserve")。

(2)加載Rserve:library("Rserve")。

(3)啟動并打開遠程連接模式:Rserve --RS -enable -remote。

(4)Java工程中引入REngine.jar、RserveEngine.jar。

要在Java項目中調(diào)用R腳本,生成分析圖形,代碼如下:

3? 結(jié)? 論

在本文中,介紹了Java調(diào)用R腳本的三種方法,各有優(yōu)缺點,如表1所示。

在我們的實際應用中使用的是Rserve,也推薦使用Rserve遠程調(diào)用模式,雖然不支持中文,但只要項目本身的參數(shù)傳遞沒有中文就可以了。這樣的方式保證了Java Web系統(tǒng)與R的維護相對獨立,增強了系統(tǒng)的靈活性和健壯性。

參考文獻:

[1] 向模軍.利用JNI實現(xiàn)Java與C++通信 [J].計算機時代,2009(12):56-57.

[2] 張魁,張粵磊,劉未昕,等.自己動手做大數(shù)據(jù)系統(tǒng) [M].北京:電子工業(yè)出版社,2016(10):145-151.

[3] 許傳本.一種混合編程技術在宏觀經(jīng)濟監(jiān)測預警系統(tǒng)中的應用 [J].電子技術與軟件工程,2017(18):167-168.

[4] 張煬,汪洋,程韌俐,等.電力系統(tǒng)負荷預測軟件中R語言與Java的接口方法研究 [J].企業(yè)技術開發(fā),2017,36(8):59-60.

[5] 趙升枝,仲梁維.基于微信平臺的共享存儲柜系統(tǒng)的設計與實現(xiàn) [J].軟件工程,2018,21(10):38-42.

[6] 宮薇薇,齊向春,裴世廉.Python與R語言混合編程方法的研究和應用 [J].計算機應用與軟件,2018,35(1):28-31.

[7] 向模軍,岐世峰,陳榮.利用Java開發(fā)ASP組件 [J].商場現(xiàn)代化,2007(29):13-14.

[8] 曹杰.基于JVM的R語言海量數(shù)據(jù)統(tǒng)計集成框架研究 [D].武漢:華中科技大學,2012.

[9] 張佳進,陳立暢,陳克平,等.基于R語言的農(nóng)業(yè)試驗統(tǒng)計軟件的設計與實現(xiàn) [J].電子設計工程,2014,22(14):10-12.

[10] 胡瑞娟.大數(shù)據(jù)架構(gòu)下的熱詞發(fā)現(xiàn)與可視化技術研究 [J].軟件工程,2018,21(5):1-3.

作者簡介:向模軍(1974-),男,漢族,四川江油人,副教授,碩士,研究方向:Web挖掘;岐世峰(1964-),男,漢族,山西臨猗人,教授,本科,研究方向:物聯(lián)網(wǎng)技術及應用。

浑源县| 广水市| 玉门市| 万全县| 苗栗县| 青川县| 秦皇岛市| 双桥区| 武城县| 天津市| 连平县| 江安县| 兰州市| 邢台县| 文安县| 桦甸市| 珲春市| 岳西县| 清流县| 讷河市| 张家口市| 昌吉市| 西乡县| 汝阳县| 乌拉特后旗| 鄂伦春自治旗| 黔南| 荆州市| 肥乡县| 灵宝市| 沙湾县| 贵州省| 方山县| 怀集县| 旬邑县| 扬州市| 湛江市| 武山县| 贡觉县| 甘孜县| 永善县|