丢弃缓冲区因为使用Rserve时出现太大的错误

时间:2015-09-29 09:06:49

标签: java r memory buffer rserve

我正在使用Rserve从我的Java代码中访问R脚本。在整个代码中,一切都工作正常,我将变量传递给Rscripts并返回结果。但是,几乎在代码的末尾,我访问R脚本,我收到以下错误:

WARNING: discarding buffer because too big (awaiting 44617265235 bytes)

并且执行因此错误而停止:

java.util.concurrent.ExecutionException: 

org.rosuda.REngine.Rserve.RserveException: eval failed, request status: invalid parameter
Caused by: org.rosuda.REngine.Rserve.RserveException: eval failed, request status: invalid parameter

我不确定为什么以及从哪里产生此错误以及如何解决此问题?我在网上找到了一个解决方案:https://github.com/cscheid/rserve-js/issues/7但它并没有证明是非常有用的。我每次访问我的R脚本后都尝试使用connection.close(),但它也不能正常工作。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可能想要增加maxinbuf。例如,为了将其设置为4GB,打开(如果它不存在则创建一个新的)文件/etc/Rserv.conf(如果您在Linux或Mac上)并放入以下行:

AddString

(金额以KB为单位)。

但是,我看到你的情况下预期的金额超过了41GB,这是一个不合理的数字(你实际上不太可能传递这样大小的参数)。您能否分享实际导致此错误的代码(Java和R代码)?