安装 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 会话所遵循的步骤:
- 安装 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
- 要访问 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&
现在打开任何浏览器并输入 localhost:8787
进入 rstudio Web 控制台并使用 username:password
组合键登录。
要安装所需的 R 包,您需要先将 libcurl
安装到主节点中,如下所示:
sudo yum update
sudo yum -y install libcurl-devel
- 解决权限问题:
sudo -u hdfs hadoop fs -mkdir /user/
sudo -u hdfs hadoop fs -chown /user/
- 检查EMR中的Spark版本并设置
SPARK_HOME
:
spark-submit --version
export SPARK_HOME='/usr/lib/spark/'
- 现在在 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,这样包才能正常工作。
我有最新版本的 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 会话所遵循的步骤:
- 安装 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
- 要访问 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&
现在打开任何浏览器并输入
localhost:8787
进入 rstudio Web 控制台并使用username:password
组合键登录。要安装所需的 R 包,您需要先将
libcurl
安装到主节点中,如下所示:
sudo yum update
sudo yum -y install libcurl-devel
- 解决权限问题:
sudo -u hdfs hadoop fs -mkdir /user/
sudo -u hdfs hadoop fs -chown /user/
- 检查EMR中的Spark版本并设置
SPARK_HOME
:
spark-submit --version
export SPARK_HOME='/usr/lib/spark/'
- 现在在 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,这样包才能正常工作。