首页 > 解决方案 > sparklyr::spark_write_jdbc 不接受 Spark 数据帧?

问题描述

我在 Databricks 中工作,尝试使用 sparklyr 函数 spark_write_jdbc 将数据帧写入 SQL Server 表。服务器名称/驱动程序等正确且有效,因为我在代码前面成功使用了 sparklyr::spark_read_jdbc()。

根据文档(此处), spark_write_jdbc 应该接受 Spark Dataframe。

我使用 SparkR::createDataFrame() 将我正在使用的数据帧转换为 Spark 数据帧。

以下是相关代码:

events_long_test <- SparkR::createDataFrame(events_long, schema = NULL, samplingRatio = 1, numPartitions = NULL)


sparklyr::spark_write_jdbc(events_long_test, 
                name ="who_status_long_test" , 
                options = list(url = url, 
                               user = user,
                               driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver",
                               password = pw,
                               dbtable = "who_status_long_test"))

但是,当我运行它时,它给了我以下错误:

UseMethod(“spark_write_jdbc”)中的错误:UseMethod(“spark_write_jdbc”)中的错误:没有适用于“spark_write_jdbc”的方法应用于“SparkDataFrame”类的对象

我四处搜寻,找不到其他人询问此错误。为什么它会说这个函数不能与 Spark Dataframe 一起工作,当文档说它可以的时候?

任何帮助表示赞赏。

标签: rsql-serverapache-spark-sqldatabrickssparklyr

解决方案


events_long 中有什么内容?语法正确,并确保选项中的连接属性正确。确保 events_long_test 是 spark 数据框而不是表。


推荐阅读