Java调用R语言

来源:互联网 发布:软件开发公司账务处理 编辑:程序博客网 时间:2024/06/01 07:42

1、安装R语言

版本:R-3.1.3, 只有此版本CRAN同时包含RMySQL、rmongodb

设置环境变量$R_HOME为D:\lang\R\R-3.1.3

2、安装RStudio,可以通过它安装需要的包




3、配置Rserve

进入$R_HOME/library/Rserve/libs/i386或$R_HOME\library\Rserve\libs\x64

执行 R CMD Rserve --RS-enable-remote    后启动Rserve服务


4、Java代码中调用R

String RServerIP = "localhost";RConnection rc = RUtil.getInstance(RServerIP);rc.assign("arg1", projectId.toString());rc.eval("source('"+path+"Get_Files_MySQL_Mongodb.R')");rc.eval("Get_Files_MySQL_Mongodb(arg1)");rc.eval("rm(list=ls())");

5、R调用MySQL和MongoDB

library(DBI)library(RMySQL)library(rmongodb)# arg1 : projectIdGet_Files_MySQL_Mongodb <- function(arg1) {## mySQL   conn <- dbConnect(MySQL(), host='127.0.0.1', port=3306, username="root",password="passw0rd",dbname="demo")   dbSendQuery(conn,'SET NAMES gbk')     queryString <- paste("select * from t_datafile where projectid = ", arg1, " && fileid != '' " )  rs  <- dbSendQuery(conn, queryString)   dat <- fetch(rs)  dat    dbClearResult(rs)  dbDisconnect(conn) ## collect data  fileid <- dat[,c("fileid")]  size <- length(fileid)## mongodb  mongo <- mongo.create(host="127.0.0.1:27017")    if (mongo.is.connected(mongo)) {     gridfs <- mongo.gridfs.create(mongo, "accenture")         i <- 1     while( i < size ){        print(fileid[i])        i <- i + 1        buf <- mongo.bson.buffer.create()        mongo.bson.buffer.append(buf, "_id", mongo.oid.from.string(fileid[i]) )                  query <- mongo.bson.from.buffer(buf)        gf <- mongo.gridfs.find(gridfs, query)         if( !is.null(gf) ){          print(mongo.gridfile.get.filename(gf))          filename <- mongo.gridfile.get.filename(gf)          # and pipe it to an R connection object               filename_path <- paste("./scdata/" ,filename, sep="")                    mongo.gridfs.remove.file(gridfs, filename_path)                    filename_csv <- file(filename_path)          mongo.gridfile.pipe(gf, filename_csv)          mongo.gridfile.destroy(gf)          i        }     }     mongo.gridfs.destroy(gridfs)  }}rmResource <- function(){    rm(list=ls())  }Get_Files_MySQL_Mongodb(20)