dplyr :: copy_to和sparklyr :: sdf_copy_to有什么区别?

时间:2019-05-15 11:57:55

标签: r dplyr sparklyr

我正在使用库sparklyr与“ spark”进行交互。有一些功能可以将数据帧置于Spark上下文中。这样的功能是“ dplyr::copy_to”和“ sparklyr::sdf_copy_to”。有什么区别?何时建议使用一种而不是另一种?

1 个答案:

答案 0 :(得分:0)

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

函数copy_todplyr的泛型函数,可与实现dplyr后端的任何数据源一起使用。

您可以将其与Spark连接配合使用,因为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遵循包范围内的约定,即以"sdf_"为前缀与Spark DataFrames相关的功能。另一方面,copy_to来自dplyrsparklyr提供了兼容的方法,以方便dplyr用户。