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的副本:
- 从下载Hadoop winutils.exe
- 将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的列。 使用SparkR
, as.Dataframe()
保留date。