999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用Rserve實現Java調用R腳本

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

向模軍 岐世峰

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

關鍵詞: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作為主流的應用軟件開發語言,極好地實現了面向對象理論,已經被廣泛應用到各種項目中,但Java缺乏數據分析以及可視化的能力。R是集統計分析與圖形顯示于一體的編程語言,可以用來進行機器學習,數據挖掘和數據可視化。Java和R,兩者天然具有整合的需要,可以互相取長補短,Java負責系統的構建,R用來做分析引擎,通過整合,將R的數據分析結果在Java應用程序中展現,從而實現應用型和分析性相結合的系統。

1? 異構語言的相互調用

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

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

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

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

2? Java調用R腳本

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

2.1? 進程方式

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

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

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

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

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

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

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

2.3? 遠程調用模式Rserve

Rserve是一個基于TCP/IP協議的,允許其他語言與R語言通信的C/S結構的程序包,支持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項目中調用R腳本,生成分析圖形,代碼如下:

3? 結? 論

在本文中,介紹了Java調用R腳本的三種方法,各有優缺點,如表1所示。

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

參考文獻:

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

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

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

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

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

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

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

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

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

[10] 胡瑞娟.大數據架構下的熱詞發現與可視化技術研究 [J].軟件工程,2018,21(5):1-3.

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

主站蜘蛛池模板: 亚洲无线一二三四区男男| 亚洲无码91视频| 亚洲国产精品无码AV| 国产精品亚洲五月天高清| 亚洲精品无码专区在线观看| 色天天综合| 天天综合亚洲| 国产v精品成人免费视频71pao | 黄色不卡视频| 欧美一区二区福利视频| 亚洲欧美日本国产专区一区| 国产剧情无码视频在线观看| 最新国语自产精品视频在| 人妻21p大胆| 国产成人精品一区二区免费看京| 国产精品乱偷免费视频| 欧美 亚洲 日韩 国产| 国产毛片基地| 精品免费在线视频| 露脸国产精品自产在线播| 久久一级电影| 天天色综合4| 色哟哟国产精品| 99精品热视频这里只有精品7| 中文字幕亚洲另类天堂| 日本人真淫视频一区二区三区| 成人在线欧美| 日本午夜三级| 国产素人在线| 波多野结衣久久精品| 亚洲中文字幕久久精品无码一区| 久热中文字幕在线观看| 制服丝袜在线视频香蕉| 美女内射视频WWW网站午夜| 人人91人人澡人人妻人人爽 | 久久人妻xunleige无码| 国产精品无码久久久久AV| 国产麻豆精品久久一二三| 国产精品亚洲αv天堂无码| 全午夜免费一级毛片| 成人在线综合| 专干老肥熟女视频网站| 少妇人妻无码首页| 亚洲高清在线播放| 一区二区三区高清视频国产女人| 国内精品小视频在线| 丰满人妻久久中文字幕| 亚洲中字无码AV电影在线观看| 国产丝袜丝视频在线观看| 嫩草在线视频| 全免费a级毛片免费看不卡| 国产粉嫩粉嫩的18在线播放91| 欧美午夜网| 欧洲免费精品视频在线| 国产无码制服丝袜| 欧美成人区| 91无码人妻精品一区| 国产在线观看精品| 中文字幕 91| 国产亚洲美日韩AV中文字幕无码成人| 国产一区二区三区在线观看视频| 自拍中文字幕| 国产精品自在在线午夜| 青青青视频91在线 | 国产精品网址在线观看你懂的| 亚洲午夜国产片在线观看| 97久久精品人人| 亚洲精品福利网站| 黄色网址手机国内免费在线观看| 亚洲欧洲AV一区二区三区| 国产精品国产主播在线观看| 国产高潮流白浆视频| igao国产精品| 黑人巨大精品欧美一区二区区| 国产精品视频久| 亚洲无码精彩视频在线观看| 国产91特黄特色A级毛片| 国产精品黑色丝袜的老师| 国产午夜福利亚洲第一| 欧美综合在线观看| 亚洲精品国产综合99| 青青草国产免费国产|