【问题标题】:what is the difference between dplyr::copy_to and sparklyr::sdf_copy_to?dplyr::copy_to 和 sparklyr::sdf_copy_to 有什么区别?
【发布时间】:2019-10-02 13:37:51
【问题描述】:

我正在使用 sparklyr 库与“spark”进行交互。有一些函数可以将数据框放入 spark 上下文中。此类函数为“dplyr::copy_to”和“sparklyr::sdf_copy_to”。有什么区别以及何时建议使用其中一种而不是另一种?

【问题讨论】:

  • sparklyrone 是为 spark 数据帧实现的(遵循分布式环境中的 RDD 概念),而dplyr 适用于 R 数据帧、小标题等......这就是你在问?我不太确定
  • 这回答了我问题的第一部分第二部分是:它们的表现是否相同?如果“是”,在什么情况下使用一种而不是另一种更好?
  • 你不能使用其中一个或另一个。您不能在 spark 环境中使用 dplyr::copy_to除非您将数据帧从 RDD 收集到 R 数据帧。反之亦然 sparklyr
  • 那么如果有两个dataframe,我想复制到spark环境,那它们之间绝对没有区别?我期望的东西是:sparklyr 版本更有效,或者以这种方式......
  • 如果您的数据框足够小,可以在本地处理(或不分发),那么dplyr 会更有效率。 Spark 的问题在于,如果您的数据集足够大,可以在分布式环境中进行分析,那么它的效率会更高。因此,如果您尝试对小型数据集进行任何类型的分析,那么在本地使用 dplyr 或任何其他 R 按照惯例在本地进行分析会更有效

标签: r dplyr sparklyr


【解决方案1】:

它们是一样的。我会使用copy_to 而不是专家sdf_copy_to,因为它与其他数据源更一致,但这是风格。

函数copy_todplyr 的泛型,适用于任何实现dplyr 后端的数据源。

您可以将它与火花连接一起使用,因为sparklyr 实现了copy_to.src_sparkcopy_to.spark_connection。它们不会暴露给用户,因为您应该使用 copy_to 并让它分派到正确的方法。

copy_to.src_sparck 只是调用copy_to.spark_connection:

#> sparklyr:::copy_to.src_spark
function (dest, df, name, overwrite, ...) 
{
    copy_to(spark_connection(dest), df, name, ...)
}
<bytecode: 0x5646b227a9d0>
<environment: namespace:sparklyr>

copy_to.spark_connection 只是调用sdf_copy_to

#> sparklyr:::copy_to.spark_connection
function (dest, df, name = spark_table_name(substitute(df)), 
    overwrite = FALSE, memory = TRUE, repartition = 0L, ...) 
{
    sdf_copy_to(dest, df, name, memory, repartition, overwrite, 
        ...)
}
<bytecode: 0x5646b21ef120>
<environment: namespace:sparklyr>

sdf_copy_to 遵循包范围的约定,即在与 Spark DataFrames 相关的函数前加上 "sdf_" 前缀。另一方面,copy_to 来自dplyrsparklyr 提供了兼容的方法,方便dplyr 用户使用。

【讨论】:

    猜你喜欢
    • 2017-07-20
    • 2020-01-17
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    相关资源
    最近更新 更多