安装SparkR

52

我有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

我该如何解决这个问题?


2
相关链接:http://stackoverflow.com/questions/32601252/why-sparkr-isnt-available-in-cran-r-package-list - ctbrown
4个回答

70

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

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

您应该选择与您使用的Spark版本相对应的标记(v2.x.x以上)。您可以在项目页面上找到完整的标记列表,或直接使用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 库添加到 .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于2018年5月1日从CRAN中删除CRAN SparkR包是否被删除?)。因此,原帖中列出的方法仍然是最可靠的解决方案。

编辑3

好的,SparkR又回到CRAN上了,版本为v2.4.1。 install.packages('SparkR')现在应该可以工作了(镜像可能需要几天时间来反映这一变化)


请注意,上述内容并不安装文档。据我所知,您需要克隆存储库并按照此处的说明进行操作:https://github.com/apache/spark/blob/master/R/DOCUMENTATION.md - MichaelChirico
2
SparkR 再次未被收录在 CRAN 中。 - kangaroo_cliff

10

SparkR需要引入整个Spark后端,而不仅仅是一个R包。如果您想要升级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交互的界面。


感谢您分享有关升级策略的信息! - Guforu
感谢您的输入。我也会更新到最新版本。 - Ole Petersen

3
我在尝试使用SparkR与Spark 2.0.0在EMR中玩耍时也遇到了类似的问题。以下是我按照的步骤,安装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 su sudo useradd username sudo echo username:password | chpasswd
  1. 要访问rstudio Web控制台,您需要从您的计算机创建一个SSH隧道到EMR主节点,如下所示:

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")


2

现在版本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,以便包能够正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接