18

我正在尝试在 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/

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

> Sys.getenv("HADOOP_CMD")
[1] "usr/bin/hadoop"

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

> Sys.getenv("HADOOP_CMD")
[1] ""

结果,当我尝试运行 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'

如果不在那个特定的 r.sh 文件中,有谁知道我应该把我的环境变量放在哪里?

谢谢!

4

3 回答 3

14

您应该在.Renvironor中设置环境变量Renviron.site。我认为这些文件是在R_HOME/etc/Renviron.site. 您可以通过键入以下内容获取更多信息:

> ?Startup

有人在这里遇到了类似的问题,这就是他为解决它所做的。

于 2013-06-01T00:25:53.340 回答
3

请注意,在 Windows 上,R 会在 .Renviron 文件中查找 .Renviron 文件/Users/<name>/Documents,而 RStudio 似乎希望 .Renviron 文件在/Users/<name>/.

于 2015-11-26T02:53:52.693 回答
-1

您应该在 Rstudio 中设置环境变量,例如

Sys.setenv("/hadoop 的路径")

然后你试试这个

于 2014-07-14T11:43:55.923 回答