我正在尝试在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 文件中设置环境变量,有人知道我应该把它们放在哪里吗?
谢谢!
/usr/lib/R/etc/Renviron
中添加了SOMEVAR = /somepath
。R.home() =“/usr/lib/R”
。 我重新启动了RStudio,Sys.getenv('SOMEVAR')
正确找到了变量。 - user1609452system("env")
时,可能最初看不到额外的环境变量。然而,当你至少在重新启动rstudio服务器后切换一次项目时,当你调用system("env")
时,你应该会看到你添加的新环境变量。 - FXQuantTrader