我正在使用库sparklyr与“ spark”进行交互。有一些功能可以将数据帧置于Spark上下文中。这样的功能是“ dplyr::copy_to
”和“ sparklyr::sdf_copy_to
”。有什么区别?何时建议使用一种而不是另一种?
答案 0 :(得分:0)
它们是相同的。我会使用copy_to
而不是专家sdf_copy_to
,因为它与其他数据源更加一致,但这是风格。
函数copy_to
是dplyr
的泛型函数,可与实现dplyr
后端的任何数据源一起使用。
您可以将其与Spark连接配合使用,因为sparklyr
实现了copy_to.src_spark
和copy_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
来自dplyr
,sparklyr
提供了兼容的方法,以方便dplyr
用户。