R 斯巴克对斯巴克

R 斯巴克对斯巴克,r,apache-spark,sparkr,sparklyr,R,Apache Spark,Sparkr,Sparklyr,有人对SparkR和Sparkyr的优缺点有什么看法吗?谷歌并没有产生任何令人满意的结果,两者似乎相当相似。尝试这两种方法,SparkR看起来要麻烦得多,而Sparkyr非常简单(既可以安装,也可以使用,尤其是使用dplyr输入)。Sparkyr只能用于并行运行dplyr函数,还是也可以用于“正常”R代码 最佳有关概述和详细信息,请参阅。 引用文档中的话,“Sparkyr包提供了完整的dplyr后端”。这反映出SparkyR不是原始ApacheSpark的替代品,而是它的扩展 继续,在单机上安装

有人对SparkR和Sparkyr的优缺点有什么看法吗?谷歌并没有产生任何令人满意的结果,两者似乎相当相似。尝试这两种方法,SparkR看起来要麻烦得多,而Sparkyr非常简单(既可以安装,也可以使用,尤其是使用dplyr输入)。Sparkyr只能用于并行运行dplyr函数,还是也可以用于“正常”R代码


最佳

有关概述和详细信息,请参阅。 引用文档中的话,“Sparkyr包提供了完整的dplyr后端”。这反映出SparkyR不是原始ApacheSpark的替代品,而是它的扩展

继续,在单机上安装(我是Windows用户)时,您可能需要下载并安装新的RStudio预览版本,或者在RStudio shell中执行以下一系列命令

>devtools::install\u github(“rstudio/sparkyr”)

如果尚未安装readr和digest软件包,请安装它们

install.packages("readr")
install.packages("digest")
library(sparklyr)
spark_install(version = "1.6.2")`
安装软件包并尝试使用命令连接到spark的本地实例后

sc <- spark_connect(master = "local")

sc我可以为您提供以下方面的亮点:

  • 支持,以及
  • 分发给
  • 易于安装

在当前的
0.4
版本中,它还不支持任意并行代码执行。但是,可以轻松地用Scala编写扩展以克服此限制,请参见。

。。。加之以上来自Javier

到目前为止,我发现SparkyR不支持do(),只有当你想做突变、总结等允许的事情时才使用它。在幕后,SparkyR正在转换为Spark SQL,但没有(现在?)将do()转换为类似UDF的东西


另外,到目前为止,我发现SparkyR不支持tidyr,包括unnest()。

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

由于Sparkyr将R转换为SQL,因此只能在
mutate
语句中使用非常小的函数集:

扩展()在一定程度上缓解了这一缺陷


除此之外,Sparkyr是一个赢家(在我看来)。除了使用熟悉的
dplyr
函数的明显优势外,SparkyR还有更全面的MLlib()API和上述扩展。

作为一个包装器,
SparkyR
还有一些限制。例如,使用
copy_to()
创建Spark数据框不会保留格式化为日期的列。使用
SparkR
as.Dataframe()
保留日期。

我最近写了一篇关于SparkR与sparkyr的优缺点的概述,可能会感兴趣:

在文章的顶部有一个简单的例子,它给出了一系列标准差异的大致概述

我的结论是
sparkyr
SparkR
更可取。最显著的优点是:

  • 通过与
    dpylr
  • 更好的函数命名约定
  • 快速评估ML模型的更好工具
  • 更容易在Spark数据帧上运行任意代码

  • 由于我没有看到太多的答案支持
    sparkR
    ,我只想提一下,作为一名新手,我开始学习这两种方法,我发现sparkR api与我使用的standard
    scala spark
    更为密切相关。当我研究它们时,我的意思是我想使用
    rstudio
    和scala,我需要在sparkr和sparkyr之间进行选择。与scala spark api一起学习sparkR似乎比学习SparkYR更省力,至少在我看来,SparkYR更为不同。然而,它似乎更强大。因此,对我来说,这是一个问题:您是想使用功能更强大、更常用的库并获得社区更多的支持,还是折衷并使用与scala spark中更相似的api,这至少是我选择的观点。

    您指向Sparkyr的链接是错误的。应该是:
    0.6
    现在支持任意并行代码执行。自
    2017-06-05
    以来,
    sparkyr(0.6.0)
    的未发布版本可以通过新添加的
    spark_apply()
    函数运行“大规模分布式R代码”。来源:有一个扩展可以帮助缩小
    tidyr
    的差距:问题是Sparkyr没有对使用spark 1.6、2.0、2.3等之间的细微差别进行基准测试,也没有技术支持来验证spark ETL与Hive或其他本机Hadoop服务一起实现产品化的最佳方法。。。以稳健和可重复的生产级流程为目标。至少在SparkR版本中,MapR、Cloudera或Hortonworks的开发团队可以参与进来,因为他们支持所有这些apache平台。