【发布时间】:2012-12-12 10:45:09
【问题描述】:
我一直在寻找一些第三方 jar 来做一些高级的分析过程,比如 Java 中的 SQL 窗口函数,因为我们的数据库 mysql 不支持它。在谷歌的帮助下,我发现“R”虽然不是基于 java 的,但它可以解决我的大部分情况。我试过“RJava”和“Rcaller”接口来连接java。
对于性能、可扩展性和长期运行,这是在 Java 中连接 R 的最佳库。请多多指教。
【问题讨论】:
我一直在寻找一些第三方 jar 来做一些高级的分析过程,比如 Java 中的 SQL 窗口函数,因为我们的数据库 mysql 不支持它。在谷歌的帮助下,我发现“R”虽然不是基于 java 的,但它可以解决我的大部分情况。我试过“RJava”和“Rcaller”接口来连接java。
对于性能、可扩展性和长期运行,这是在 Java 中连接 R 的最佳库。请多多指教。
【问题讨论】:
假设“Java 中的 R”意味着从 Java 调用 R:JRI(rJava 的一部分)将 R 嵌入到 Java 中。这是最有效的方式,因为它是一个直接的 JNI 接口。 (有关已部署的示例,请参阅 JGR)。
另一种选择是 Rserve,它是一个客户端/服务器概念。它有在系统之间序列化数据的缺点,但允许并行连接(在 unix 上),这在 JRI 中是不可能的,因为 R 是单线程的,因此每个 Java 进程只能在一个线程中运行。
RCaller 是效率最低的,因为它只是调用 R 进程,因此存在冷启动问题(与 Rserve 相比)以及序列化效率较低。
【讨论】:
REngine 实例,这些实例适用于 Rserve 但不适用于 JRI。