使用Rserve方式搭建R语言环境服务供Java进行调用

使用Rserve方式搭建R语言环境服务供Java进行调用

1、服务器R语言搭建

环境

名称版本
CentOS7.9
R语言3.6.0
# 安装EPEL
 yum install epel-release

# 安装R
 yum install R

# 查看R的版本
 R --version
 #  安装,1.输入R进行R环境
 R
 # 安装Rserve,并指定源
 install.packages("Rserve", repos = "https://mirrors.ustc.edu.cn/CRAN/")
 # 以服务方式启动Rserve,供Java调用,默认端口号6311,日志输出文件R.out,后台启动
 R CMD Rserve --RS-enable-remote --no-save> R.out 2>&1 &
 ## R语言环境搭建成功

2、Java环境搭建

引入maven依赖

<dependency>
    <groupId>org.rosuda.REngine</groupId>
    <artifactId>Rserve</artifactId>
    <version>1.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.rosuda.REngine/REngine -->
<dependency>
    <groupId>org.rosuda.REngine</groupId>
    <artifactId>REngine</artifactId>
    <version>2.1.0</version>
</dependency>

编写测试demo

public class RDemo {
    public static void main(String[] args) {
        try {
			// 建立连接,返回连接对象
            RConnection rc = new RConnection("10.10.102.73",6311);
            // 服务器中R语言脚本路径
            String fileName = "/root/R/hello-world.R";
            // 指定要执行的R语言脚本,需要先指定脚本
            rc.assign("fileName", fileName);
            // 向脚本中进行参数传递,只需要和脚本中的参数名称保持一致即可
            rc.eval("user <- 'root'");
            rc.eval("password <- '123456'");
            rc.eval("dbname <- 'test'");
            rc.eval("host <- '127.0.0.1'");
            // 执行
            rc.eval("source(fileName)");
            // 调用R语言脚本中的函数,接收返回值
            rc.eval("getId()").asInteger();
            rc.close();
        } catch (Exception e) {
            e.printStackTrace();

        }
    }
}

R语言脚本示例

##引入mysql依赖
library(RMySQL)

# 获取数据库连接
mysqlconnection = dbConnect(MySQL(), user = user, password = password, dbname = dbname, host = host)
# 执行sql
result <- dbSendQuery(mysqlconnection, 'select * from test')
#使用fetch获取查询记录
libdata.fam <- fetch(result)
print(libdata.fam)
## 关闭数据库连接
dbDisconnect(mysqlconnection)
# R语言定义函数
getId <- function(){
   ## 返回值
    return <- 1
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值