安装SparkR

Guf*_*oru 46 r apache-spark sparkr

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

> install.packages("SparkR")
Run Code Online (Sandbox Code Playgroud)

我回来了:

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)
Run Code Online (Sandbox Code Playgroud)

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

Spark 1.4.0
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

zer*_*323 66

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

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

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

jsonlite::fromJSON("https://api.github.com/repos/apache/spark/tags")$name
Run Code Online (Sandbox Code Playgroud)

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

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

你也可以添加R lib .libPaths(取自这里):

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

最后,您可以使用sparkRshell而无需任何其他步骤:

$ /path/to/spark/directory/bin/sparkR
Run Code Online (Sandbox Code Playgroud)

编辑

根据Spark 2.1.0的说明,未来CRAN上应该有发行说明:

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

您可以按照SPARK-15799查看进度.

编辑2

虽然SPARK-15799已经被合并,满足CRAN要求被证明是挑战(参见例如关于讨论2.2.2,2.3.1,2.4.0),并且包装已随后被移除(参见例如SparkR从CRAN删除在2018-05-01,CRAN SparkR包被删除?).由于原始帖子中列出的结果方法仍然是最可靠的解决方案.

  • `SparkR` 不再出现在 CRAN 中。 (2认同)

can*_*his 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")
Run Code Online (Sandbox Code Playgroud)

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