在LAMP系统上与R(R Project),MySQL和Java进行通信的最有效方法是什么?

时间:2014-04-08 20:01:10

标签: java mysql r servlets lamp

我目前正在运行LAMP系统(Linux Apache MySQL PHP)。我有一个存储在MySQL数据库中的数据表。我需要将此表发送到当前在Apache上安装并运行的R(R project)。然后我需要向R发送一个长字符串公式,用于对来自MySQL的数据运行模型(线性回归)。从那里,我需要将模型的摘要从R返回到MySQL。

使用以下其中一项是否有益?

  • 在网页上运行的Java servlet
  • 在Apache Tomcat上运行的Java servlet
  • Java Bean

我的情况是否有更好的套餐?我已经看过并阅读了RserveJRIrjava的文档。但是,我无法破译哪个软件包更适合我的任务。

使用Rserve和在网页上运行的servlet的测试示例:

RServeExample1.java:

import org.rosuda.REngine.REXP;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;

public class RServeExample1 {

public static void main(String[] args) throws RserveException, REXPMismatchException {
    RConnection c = new RConnection();
    REXP x = c.eval("R.version.string");
    System.out.println(x.asString());
}
}

编译完文件后,我将.class文件上传到服务器并添加到以下HTML中:

<APPLET CODE=RServeExample1.class WIDTH="150" HEIGHT="25"></applet>

打开网页时,会产生java应用程序错误 - RuntimeException。

java.lang.reflect.InvocationTargetException

我是以错误的方式实现这一点吗?

1 个答案:

答案 0 :(得分:2)

Rserve JRI 可行。关键的区别在于Rserve将R逻辑与应用程序的其余部分分开,而JRI将其包含在应用程序中。我认为前者对于您的设置来说是更好的选择,但最好的方法是找出最适合您的应用程序运行的场景并比较它们的性能。