50

我有最后一个版本的 R - 3.2.1。现在我想在 R 上安装 SparkR。执行后:

> install.packages("SparkR")

我回来了:

Installing package into ‘/home/user/R/x86_64-pc-linux-gnu-library/3.2’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘SparkR’ is not available (for R version 3.2.1)

我还在我的机器上安装了 Spark

Spark 1.4.0

我该如何解决这个问题?

4

4 回答 4

69

您可以直接从 GitHub 存储库安装:

if (!require('devtools')) install.packages('devtools')
devtools::install_github('apache/spark@v2.x.x', subdir='R/pkg')

v2.x.x您应该选择与您使用的 Spark 版本相对应的标签(上)。您可以在项目页面上找到完整的标签列表,也可以使用GitHub API直接从 R 中找到:

jsonlite::fromJSON("https://api.github.com/repos/apache/spark/tags")$name

如果您从下载页面下载了二进制包,则 R 库位于R/lib/SparkR子目录中。可以SparkR直接安装使用。例如:

$ export SPARK_HOME=/path/to/spark/directory
$ cd $SPARK_HOME/R/pkg/
$ R -e "devtools::install('.')"

您还可以将 R lib 添加到.libPaths(取自此处):

Sys.setenv(SPARK_HOME='/path/to/spark/directory')
.libPaths(c(file.path(Sys.getenv('SPARK_HOME'), 'R', 'lib'), .libPaths()))

最后,您sparkR无需任何额外步骤即可使用 shell:

$ /path/to/spark/directory/bin/sparkR

编辑

根据Spark 2.1.0 发行说明,未来应该在 CRAN 上可用:

使用 Apache Spark 版本构建的独立可安装包。我们将很快将此提交给 CRAN。

您可以关注SPARK-15799查看进度。

编辑 2

虽然 SPARK-15799 已被合并,但满足 CRAN 要求被证明是具有挑战性的(参见例如关于2.2.22.3.12.4.0的讨论),并且这些包随后被删除(参见例如SparkR 已从 CRAN 中删除在 2018-05-01 上CRAN SparkR 包被删除了?)。由于原始帖子中列出的结果方法仍然是最可靠的解决方案。

编辑 3

好的,SparkR再次在 CRAN 上备份,v2.4.1。install.packages('SparkR')应该再次工作(镜子可能需要几天时间才能反映这一点)

于 2015-07-02T12:52:22.467 回答
10

SparkR 不仅需要一个 R 包,还需要拉入整个 Spark 后端。当您想要升级 SparkR 时,您正在升级 Spark,而不仅仅是 R 包。如果您想使用 SparkR,那么这篇博文可能会对您有所帮助:https ://blog.rstudio.org/2015/07/14/spark-1-4-for-rstudio/ 。

不过应该说:现在你可能想参考 sparklyr 包,因为它使这一切变得容易得多。

install.packages("devtools")
devtools::install_github("rstudio/sparklyr")
library(sparklyr)
spark_install(version = "1.6.2")
spark_install(version = "2.0.0")

它还提供了比 SparkR 更多的功能以及非常好的dplyr.

于 2016-09-13T08:36:19.823 回答
3

在尝试使用 Spark 2.0.0 在 EMR 中使用 SparkR 时,我也遇到了类似的问题。我将在此处发布安装 rstudio 服务器、SparkR、sparklyr 并最终连接到 EMR 集群中的 spark 会话的步骤:

  1. 安装 rstudio 服务器:在 EMR 集群启动并运行后,使用用户 'hadoop@' ssh 到主节点并下载 rstudio 服务器

wget https://download2.rstudio.org/rstudio-server-rhel-0.99.903-x86_64.rpm

然后使用安装yum install

sudo yum install --nogpgcheck rstudio-server-rhel-0.99.903-x86_64.rpm

最后添加一个用户来访问 rstudio Web 控制台:

须藤

sudo useradd 用户名

须藤回声用户名:密码| 密码

  1. 要访问 rstudio Web 控制台,您需要创建一个从您的机器到 EMR 主节点的 SSH 隧道,如下所示:

ssh -NL 8787:ec2-emr-master-node-ip.compute-1.amazonaws.com:8787 hadoop@ec2-emr-master-node-ip.compute-1.amazonaws.com&

  1. 现在打开任何浏览器并键入localhost:8787以转到 rstudio Web 控制台并使用username:password组合登录。

  2. 要安装所需的 R 包,您需要先安装libcurl到主节点,如下所示:

须藤百胜更新

sudo yum -y 安装 libcurl-devel

  1. 通过以下方式解决权限问题:

sudo -u hdfs hadoop fs -mkdir /user/

sudo -u hdfs hadoop fs -chown /user/

  1. 检查 EMR 中的 Spark 版本并设置SPARK_HOME

火花提交--版本

导出 SPARK_HOME='/usr/lib/spark/'

  1. 现在在 rstudio 控制台安装SparkR如下:

install.packages('devtools')

devtools::install_github('apache/spark@v2.0.0', subdir='R/pkg')

install.packages('sparklyr')

库(SparkR)

图书馆(sparklyr)

Sys.setenv(SPARK_HOME='/usr/lib/spark')

sc <- spark_connect(master = "yarn-client")

于 2016-10-14T05:24:37.750 回答
1

现在版本 2.1.2 和 2.3.0 的 SparkR 现已在CRAN的存储库中可用,您可以按如下方式安装版本 2.3.0:

install.packages("https://cran.r-project.org/src/contrib/Archive/SparkR/SparkR_2.3.0.tar.gz", repos = NULL, type="source")

注意:您必须先从下载处下载并安装对应版本的Apache Spark 这样包才能正常工作。

于 2018-08-11T16:10:38.467 回答