我的应用程序必须执行R操作,例如:
m = matrix(sample(0:1,100, rep=T),ncol=10)
Run Code Online (Sandbox Code Playgroud)
结果应该可供Java应用程序使用.
所述Rserve包桥R 1至其他语言,因为它作为一个TCP/IP服务器.我已阅读该网站,但不知道如何制作可以使用Rserve的最简单的应用程序.
制作一个使用Rserve从Java执行R命令的简单Eclipse应用程序需要哪些步骤?
我正在通过Ruby绑定与Rserve合作.建立与Rserve的连接非常简单,我认为最好在全局范围内保持连接,以避免将其拆除并根据需要重新构建它的开销(我不是在多线程环境中运行) .
由于定义的对象会粘在一起,并且可能会在以后的操作中进行分类,因此我想清除它们.我见过:
myvar = 1
rm(myvar)
Run Code Online (Sandbox Code Playgroud)
但是,我宁愿重新初始化所有内容,以避免必须手动跟踪定义的内容.这可能吗?如果是这样,是否会产生很大的开销?
我想知道一种在Rserve中为Java客户端实现回调机制的简单方法.根据Rserve文档:
Rserve不提供回调功能.您的应用程序可以通过TCP/IP和R套接字实现回调,但它不是Rserve的一部分.
这意味着我的java客户端可以通过Rconnection引用调用远程Session上的函数,但是远程Session不能回调已经实例化它的java客户端.我该如何开发这样一种机制.如果它通过R套接字或tcp/ip服务器,这是否意味着每个连接都会打开套接字服务器?
以前我可以通过命令行启动Rserve:
R CMD Rserve
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上升级到3.0.2后,我得到:
/usr/lib/R/bin/Rcmd: 62: exec: Rserve: not found
Run Code Online (Sandbox Code Playgroud)
我尝试过手动重新安装和启动
R
> install.packages('rserve')
> ...compiles successfully...
> RServe()
Starting Rserve:
/usr/lib/R/bin/R CMD /home/user1/R/x86_64-pc-linux-gnu-library/3.0/Rserve/libs//Rserve
Run Code Online (Sandbox Code Playgroud)
......工作正常.
R CMD Rserve仍然出现与上述相同的错误.我试过通过以下方式指定路径:
export RHOME="/home/jwiley/R/x86_64-pc-linux-gnu-library/3.0/Rserve/libs/"
export R_LIBS="/home/jwiley/R/x86_64-pc-linux-gnu-library/3.0/Rserve/libs/"
Run Code Online (Sandbox Code Playgroud)
如何说服R CMD使用正确的目录?
我在Mac和Ubuntu中尝试了很多选项.我阅读了Rserve文档
http://rforge.net/Rserve/doc.html
Run Code Online (Sandbox Code Playgroud)
以及Rserve和RSclient包的内容:
http://cran.r-project.org/web/packages/RSclient/RSclient.pdf
http://cran.r-project.org/web/packages/Rserve/Rserve.pdf
我无法弄清楚在Rserve中打开/关闭连接以及正常关闭Rserve的正确工作流程是什么.
例如,在Ubuntu中,我使用./config --enable-R-shlib(遵循Rserve文档)从源代码安装了R,并在/etc/Rserve.conf中添加了"control enable"行.
在Ubuntu终端中:
library(Rserve)
library(RSclient)
Rserve()
c<-RS.connect()
c ## this is an Rserve QAP1 connection
## Trying to shutdown the server
RSshutdown(c)
Error in writeBin(as.integer....): invalid connection
RS.server.shutdown(c)
Error in RS.server.shutdown(c): command failed with satus code 0x4e: no control line present (control commands disabled or server shutdown)
Run Code Online (Sandbox Code Playgroud)
但是,我可以关闭连接:
RS.close(c)
>NULL
c ## Closed Rserve connection
Run Code Online (Sandbox Code Playgroud)
关闭连接后,我也尝试了选项(即使连接已关闭,也尝试使用参数'c'):
RS.server.shutdown()
RSshutdown()
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
1-如何优雅地关闭Rserve?
2-没有RSclient可以使用Rserve吗?
我也看了看
但问题是调试模式,也没有解决.(我没有足够的声誉来评论/询问关闭是否在非调试模式下工作).
还看了看:
非常感谢!
我使用cmd从Server机器运行RServe
Rserve.exe --RS-conf Rserv.conf --RS-port 12306
Run Code Online (Sandbox Code Playgroud)Rserv.conf文件包含以下内容:
pwdfile RserveAuth.txt
auth required
remote enable
plaintext disable
RserveAuth.txt具有以下内容:
管理员123456
我从JAVA连接到R Server
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.REngineException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.*;
public class ConnecttoR
{
...
...
public void connectR()
{
try
{
RConnection connection = new RConnection("172.16.33.242",12306); // Works if authentication is not required in Rserv.conf
}
catch (RserveException e) {
e.printStackTrace();
}
catch(REXPMismatchException e){
e.printStackTrace();
}
catch(REngineException e){
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)无需用户名和密码即可连接所有人.如何添加安全性并仅允许使用有效凭据连接以访问Rserve
我有6个Linux盒子运行RServe并提供相同的R脚本集.
192.168.0.1 : 6311
192.168.0.2 : 6311
...
...
192.168.0.6 : 6311
Run Code Online (Sandbox Code Playgroud)
我使用REngine(Rserve Java Client)从java连接到这些Rserve.
RConnection rServeConnection = new RConnection(R_SERVE_SERVER_ADDRESS, R_SERVE_SERVER_PORT);
Run Code Online (Sandbox Code Playgroud)
现在我该如何对此进行负载均衡?最好在Apache Mod Proxy中?
我试过httpd websocket负载均衡设置,没有运气.
更新:结论httpd不会平衡TCP流量(Rserve使用TCP,而Rserve中有选项可以启用websocket模式,我的用例不需要额外的层).已转移到HAProxy以使用config进行负载平衡,如下面的链接所示,并且能够通过容错来平衡R脚本请求.
我是R的新手,我决定将R放在我拥有的机器上,看看我是否可以远程运行台式机上的代码.
在搜索"怎么做"时,我遇到了"Rserve"和"RStudio"的名字.据我所知,RServe是一个包(实际上,这似乎是在包),我可以用它来配置服务器,而RStudio是IDE.
我的问题是:RStudio"引擎盖下"使用RServe吗?而且,如果没有,那么RStudio与RServe相比如何呢?(即,哪一个更好,为什么?)
[我发现这个问题可能是重复的,但我找不到任何类似的问题]
使用HAProxy,我正在尝试(TCP)负载平衡Rserve(在TCP套接字中侦听用于调用R脚本的服务)在2个节点中的端口6311上运行.
下面是我的配置文件.当我运行HAProxy时,它的状态没有任何问题.但是当我连接到平衡节点时,低于错误.配置有什么问题?
Handshake failed: expected 32 bytes header, got -1
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode tcp
log global
option httplog
option dontlognull
option http-server-close
#option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout …Run Code Online (Sandbox Code Playgroud) 我有一堆R脚本可以读取各种来源的数据,执行所需的所有分析并进行一些可视化.现在,我需要将可视化部分传递给Tableau,并在后者中准备整个仪表板.
从我知道我可以全部保存data.frames到.Rdata文件,并在加载的Tableau他们,但似乎从长远来看,要cumbersone,而整个程序应尽可能自动化.
我要知道的第二个选项是读取Tableau中的数据,连接到R via Rserve并从中调用简单的R脚本Tableau.这是一个选择,但是:
所以我的问题是集成R和Tableau的最佳方法是什么,以便在我执行RI中的所有分析之后只能用几个图更新早期Tableau仪表板中的数据?