【发布时间】:2015-01-15 02:21:19
【问题描述】:
我正在尝试使用 R 为 Hadoop Streaming 实现一个 reducer。但是,我需要找到一种方法来访问某些未内置在 R、dplyr..etc 中的库。根据我的研究,似乎有两种方法:
(1) 在reducer代码中,将所需的库安装到一个临时文件夹中,它们将在会话完成时被释放,如下所示:
.libPaths(c(.libPaths(), temp <- tempdir()))
install.packages("dplyr", lib=temp, repos='http://cran.us.r-project.org')
library(dplyr)
...
但是,这种方法会产生巨大的开销,具体取决于您尝试安装的库数量。所以大部分时间都浪费在安装库上(像 dplyr 这样的复杂库有大量的依赖项,在 vanilla R 会话上安装需要几分钟)。
听起来我需要事先安装它,这导致我们使用方法 2。
(2) 我的集群相当大。而且我必须使用像 Ansible 这样的工具才能使其工作。所以我更喜欢使用一个 Linux shell 命令来安装库。我以前见过R CMD INSTALL...,但是感觉只会从源文件安装包,而不是在R控制台中执行install.packages(),找出镜像,拉取源文件,在一个命令中安装它。
谁能告诉我如何在 shell 中使用一个命令行以非交互方式安装 R 包? (对于这么多的背景知识感到抱歉,如果有人认为我没有遵循正确的哲学,请随时在评论中留下如何管理整个集群 R 包。)
【问题讨论】:
标签: r ansible hadoop-streaming