标签: rserve

使用Eclipse和Rserve从Java调用R的简单程序

我的应用程序必须执行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应用程序需要哪些步骤?

java eclipse r rserve

22
推荐指数
2
解决办法
4万
查看次数

清除R工作空间中的所有用户定义对象

我正在通过Ruby绑定与Rserve合作.建立与Rserve的连接非常简单,我认为最好在全局范围内保持连接,以避免将其拆除并根据需要重新构建它的开销(我不是在多线程环境中运行) .

由于定义的对象会粘在一起,并且可能会在以后的操作中进行分类,因此我想清除它们.我见过:

myvar = 1
rm(myvar)
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿重新初始化所有内容,以避免必须手动跟踪定义的内容.这可能吗?如果是这样,是否会产生很大的开销?

workspace r rserve

16
推荐指数
1
解决办法
5万
查看次数

如何在Rserve中实现回调机制?

我想知道一种在Rserve中为Java客户端实现回调机制的简单方法.根据Rserve文档:

Rserve不提供回调功能.您的应用程序可以通过TCP/IP和R套接字实现回调,但它不是Rserve的一部分.

这意味着我的java客户端可以通过Rconnection引用调用远程Session上的函数,但是远程Session不能回调已经实例化它的java客户端.我该如何开发这样一种机制.如果它通过R套接字或tcp/ip服务器,这是否意味着每个连接都会打开套接字服务器?

sockets r rserve

14
推荐指数
1
解决办法
749
查看次数

如何指定R CMD exec目录?

以前我可以通过命令行启动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使用正确的目录?

r rserve

14
推荐指数
1
解决办法
3018
查看次数

我怎样才能优雅地关闭Rserve?

我在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吗?

我也看了看

如何关闭Rserve(),在DEBUG中运行

但问题是调试模式,也没有解决.(我没有足够的声誉来评论/询问关闭是否在非调试模式下工作).

还看了看:

如何使用R客户端连接到Rserve

非常感谢!

r rserve

13
推荐指数
2
解决办法
1万
查看次数

使用身份验证从JAVA连接到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

java windows r tcp-ip rserve

13
推荐指数
1
解决办法
753
查看次数

负载均衡R请求到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脚本请求.

HAProxy负载平衡TCP流量

apache load-balancing r haproxy rserve

9
推荐指数
1
解决办法
496
查看次数

RStudio和RServe之间有什么关系?

我是R的新手,我决定将R放在我拥有的机器上,看看我是否可以远程运行台式机上的代码.

在搜索"怎么做"时,我遇到了"Rserve"和"RStudio"的名字.据我所知,RServe是一个包(实际上,这似乎是包),我可以用它来配置服务器,而RStudio是IDE.

我的问题是:RStudio"引擎盖下"使用RServe吗?而且,如果没有,那么RStudio与RServe相比如何呢?(即,哪一个更好,为什么?)

[我发现这个问题可能是重复的,但我找不到任何类似的问题]

r rstudio rserve rstudio-server

8
推荐指数
1
解决办法
8241
查看次数

HAProxy负载平衡TCP流量

使用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)

tcp load-balancing haproxy rserve

8
推荐指数
1
解决办法
4万
查看次数

R中的计算,Tableau中的可视化 - 如何正确地集成这两个?

我有一堆R脚本可以读取各种来源的数据,执行所需的所有分析并进行一些可视化.现在,我需要将可视化部分传递给Tableau,并在后者中准备整个仪表板.

从我知道我可以全部保存data.frames.Rdata文件,并在加载的Tableau他们,但似乎从长远来看,要cumbersone,而整个程序应尽可能自动化.

我要知道的第二个选项是读取Tableau中的数据,连接到R via Rserve并从中调用简单的R脚本Tableau.这是一个选择,但是:

  • R脚本不能完全自动化 - 它们需要与用户进行一些交互,是必须控制分析的用户,它应该保留为
  • 我的脚本做了很多数据清理和争论,我认为最好将这个工作单独留在R中

所以我的问题是集成R和Tableau的最佳方法是什么,以便在我执行RI中的所有分析之后只能用几个图更新早期Tableau仪表板中的数据?

r tableau-api rserve

8
推荐指数
1
解决办法
429
查看次数