【问题标题】:Rserve / R stacks on parallel processingRserve / R 堆栈并行处理
【发布时间】:2019-11-27 08:16:19
【问题描述】:

我正在构建一个 Java REST 应用程序,该应用程序通过我在 Ubuntu 上运行的 Rserve 调用 R 函数。我正在调用的 R 函数通过 RJDBC 数据库调用 Oracle,收集数据等等。

根据我理解的文档,如果我在 linux 系统上运行 Rserve,我不需要在不同的端口上启动单独的实例,并且运行一个 Rserve 实例就足够了。

所以我正在创建这样的连接:

public static synchronized RConnection getConnection() throws RserveException {
if(connection == null || !connection.isConnected()) {
    connection = new RConnection(HOST);
    init(connection);
}
return connection;

}

对于 1 个用户来说一切正常,但同时出现错误:

Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", "getConnection",  : 
  ignoring SIGPIPE signal

我应该为每个呼叫创建单独的连接还是应该在一个连接中拨打电话?

【问题讨论】:

    标签: java r parallel-processing rserve


    【解决方案1】:

    您应该为每个请求建立新的 rjdbc 连接(我认为初始化 rjava),因为请求是在分叉中处理的。并且 db 连接现在是 fork 安全的。

    【讨论】:

      最近更新 更多