Rstudio-server环境变量没有加载?

AI5*_*963 15 hadoop r cloudera rstudio rstudio-server

我正在尝试在Cloudera的hadoop发行版上运行rhadoop(我不记得它的CDH3或4),并且遇到了一个问题:Rstudio服务器似乎无法识别我的全局变量.

在我的/etc/profile.d/r.sh文件中,我有:

export HADOOP_HOME=/usr/lib/hadoop
export HADOOP_CONF=/usr/hadoop/conf
export HADOOP_CMD=/usr/bin/hadoop
export HADOOP_STREAMING=/usr/lib/hadoop-mapreduce/
Run Code Online (Sandbox Code Playgroud)

当我从终端运行R时,我得到:

> Sys.getenv("HADOOP_CMD")
[1] "usr/bin/hadoop"
Run Code Online (Sandbox Code Playgroud)

但是当我运行Rstudio服务器时:

> Sys.getenv("HADOOP_CMD")
[1] ""
Run Code Online (Sandbox Code Playgroud)

结果,当我尝试运行rhdfs时:

> library("rJava", lib.loc="/home/cloudera/R/x86_64-redhat-linux-gnu-library/2.15")
> library("rhdfs", lib.loc="/home/cloudera/R/x86_64-redhat-linux-gnu-library/2.15")
Error : .onLoad failed in loadNamespace() for 'rhdfs', details: 
    call: fun(libname, pkgname)
    error: Environment variable HADOOP_CMD must be set before loading package rhdfs
Error: package/namespace load failed for 'rhdfs'
Run Code Online (Sandbox Code Playgroud)

有没有人知道我应该把我的环境变量放在那个特定的r.sh文件中?

谢谢!

Cha*_*guy 12

您应该在.Renviron或中设置环境变量Renviron.site.我认为这些文件是在下面定义的R_HOME/etc/Renviron.site.您可以输入以下内容获取更多信息:

> ?Startup
Run Code Online (Sandbox Code Playgroud)

有人在这里有类似的问题,这就是他为解决这个问题所做的.

  • 为我工作,我将 `SOMEVAR = /somepath` 添加到 `/usr/lib/R/etc/Renviron`。`R.home() = "/usr/lib/R"`。我重新启动了 RStudio 并且 `Sys.getenv('SOMEVAR')` 正确地找到了该变量。 (2认同)
  • 顺便说一句,“此处”链接目前已过时,我同意 @AI52487963 的观点,即“?Startup”文档对于 rstudio-server 新手来说不是很有帮助 (2认同)
  • 万一它对其他人有帮助,当您将新的环境变量添加到 Renviron 并重新启动 rstudio 服务器时,当您使用 `system("env")` 时,您最初可能不会看到额外的环境变量。但是,当您至少切换一次项目时(重新启动 rstudio 服务器后),您应该会看到调用 `system("env")` 时添加的新环境变量 (2认同)