安装 SparkR

Installing of SparkR

我有最新版本的 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

我该如何解决这个问题?

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

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

您应该选择与您使用的 Spark 版本对应的标签(v2.x.x 以上)。您可以在 project page or directly from R using GitHub API:

上找到完整的标签列表
jsonlite::fromJSON("https://api.github.com/repos/apache/spark/tags")$name

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

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

您还可以将 R 库添加到 .libPaths(取自 here):

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 Release Notes 将来应该可以在 CRAN 上使用:

Standalone installable package built with the Apache Spark release. We will be submitting this to CRAN soon.

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

编辑 2

虽然 SPARK-15799 已合并,但事实证明满足 CRAN 要求具有挑战性(参见有关 2.2.2, 2.3.1, 2.4.0), and the packages has been subsequently removed (see for example SparkR was removed from CRAN on 2018-05-01, CRAN SparkR package removed? 的示例讨论)。由于原post中列出的结果方法仍然是最可靠的解决方案。

编辑 3

好的,SparkR 再次在 CRAN 上备份,v2.4.1。 install.packages('SparkR') 应该可以再次使用(镜子可能需要几天时间才能反映出来)

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 的非常好的界面。

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

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

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 su

sudo useradd username

sudo echo username:password | chpasswd

  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 update

sudo yum -y install libcurl-devel

  1. 解决权限问题:

sudo -u hdfs hadoop fs -mkdir /user/

sudo -u hdfs hadoop fs -chown /user/

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

spark-submit --version

export 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')

library(SparkR)

library(sparklyr)

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

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

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

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

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