问题描述
如何将SparkDataFrame
的{{1}}转换为SparkR
的{{1}}?
此处提出了类似的问题:Convert spark dataframe to sparklyR table "tbl_spark"。
建议使用sdf_copy_to函数,但是此函数的输入必须是R对象,而不是tbl_spark
。
有解决此问题的建议吗?
谢谢!
解决方法
使用临时Spark表将SparkR::SparkDataFrame
转换为sparklyr::tbl_spark
。
从SparkDataFrame
中的SparkR
开始
df_sparkr <- SparkR::createDataFrame(data.frame(
x = 1:10
))
在Spark中创建一个临时表
SparkR::registerTempTable(df_sparkr,"temp_df")
使用sparklyr
sc <- sparklyr::spark_connect(master = "local")
df_sparklyr <- dplyr::tbl(sc,"temp_df")
如果数据很小,这是第二种方法。您可以转换为普通的R数据帧,然后复制到sparklyr
中。如果数据帧很大,则不建议这样做。
df_normal <- SparkR::collect(df_sparkr)
df_sparklyr <- dplyr::copy_to(sc,df_normal)