我正在寻找一些第三方jar来执行一些高级分析过程,例如Java中的SQL窗口函数,因为我们的数据库mysql不支持它。在谷歌的帮助下,我找到了"R",虽然它不是基于 java 的,但它可以解决我的大部分情况。我尝试过"RJava"和"Rcaller"接口来连接java。
对于性能,可伸缩性和长期运行,这是在Java中连接R的最佳库。恳请指教。
假设"Java 中的 R"意味着从 Java 调用 R:JRI(rJava 的一部分)在 Java 中嵌入 R。这是最有效的方法,因为它是直接的JNI接口。(有关已部署的示例,请参阅 JGR)。
另一种选择是Rserve,这是一个客户端/服务器概念。它具有在系统之间序列化数据的惩罚,但允许并行连接(在unix上),这在JRI中是不可能的,因为R是单线程的,因此每个Java进程只能在一个线程中运行。
RCaller 是效率最低的,因为它只是调用 R 进程,因此存在冷启动问题(与 Rserve 相比)以及效率较低的序列化。