SparkR vs sparklyr

有人对SparkR vs Sparklyr的优缺点有一个概述吗? 谷歌不会产生令人满意的结果,两者看起来都非常相似。 尝试两种方法,SparkR看起来更麻烦,而Sparklyr非常简单(既要安装也要使用,特别是在dplyrinput方面)。 sparklyr只能用于并行运行dplyr函数还是用于“正常”R-Code?

最好

SparkR的最大优点是能够在Spark上运行用R写的任意用户定义的函数:

https://spark.apache.org/docs/2.0.1/sparkr.html#applying-user-defined-function

由于sparklyr将R转换为SQL,因此只能在mutate语句中使用很less的一组函数:

http://spark.rstudio.com/dplyr.html#sql_translation

这个不足可以通过扩展( http://spark.rstudio.com/extensions.html#wrapper_functions )得到缓解。

除此之外,sparklyr是一个胜利者(在我看来)。 除了使用熟悉的dplyr函数的明显优势之外,Sparklyr还提供了更全面的MLlib( http://spark.rstudio.com/mllib.html )和上面提到的扩展API。

…从Javier添加到上面…

到目前为止我发现,sparklyr不支持do(),只有当你想做mutate,summarize等允许的时候才使用它。在引擎盖下,sparklyr正在转换成Spark SQL,但是不会但是?)把do()转换成像UDF一样的东西。

另外,我可以find迄今为止,sparklyr不支持tidyr,包括unnest()。

我可以给你sparklyr的亮点:

  • 支持dplyr , Spark ML和H2O 。
  • 分布在CRAN上 。
  • 易于安装。
  • 可扩展的 。

在当前的0.4版本中,它不支持任意的并行代码执行。 但是,扩展可以很容易地写在斯卡拉来克服这个限制,看Sparkhello 。

有关概述和深入的详细信息,请参阅文档 。 从文档引用,“sparklyr包提供了一个完整的dplyr后端”。 这反映了sparklyr 不是替代原来的apache的火花,而是它的扩展。

继续下去,在独立的计算机上谈论它的安装(我是一个Windows用户),您需要下载并安装新的RStudio预览版本,或者在RStudioshell程序中执行以下一系列命令,

> devtools::install_github("rstudio/sparklyr")

安装readr和摘要包,如果你没有安装它们。

 install.packages("readr") install.packages("digest") library(sparklyr) spark_install(version = "1.6.2")` 

一旦安装了软件包,并尝试使用命令连接连接到本地的spark实例;

 sc <- spark_connect(master = "local") 

您可能会看到如下错误

在下面创build了默认的hadoop bin目录:C:\ spark-1.6.2 \ tmp \ hadoop错误:

要在Windows上运行Spark,您需要一份Hadoop winutils.exe的副本:

  1. 从下载Hadoop winutils.exe
  2. 将winutils.exe复制到C:\ spark-1.6.2 \ tmp \ hadoop \ bin

或者,如果您正在使用RStudio,则可以安装包含Hadoop winutils.exeembedded式副本的RStudio预览版本 。

错误的解决是给你的。 转到github帐户,下载winutils.exe文件并将其保存到位置C:\spark-1.6.2\tmp\hadoop\bin并尝试再次创buildspark上下文。 去年我在博客上发表了一篇详细的文章,详细介绍了windows环境下的安装和使用sparkR。

话虽如此,我build议不要通过在通常的RStudio上安装spark的本地实例这一痛苦的path,而是尝试RStudio预览版本。 这将大大节省您创buildsparkcontext的麻烦。 进一步,这里是一个详细的post,如何sparklyr可以使用R的博客 。

我希望这有帮助。

干杯。

作为包装, sparklyr有一些限制。 例如,使用copy_to()创buildSpark数据copy_to()不会保留格式设置为date的列。 使用SparkRas.Dataframe()保留date。

Interesting Posts