Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何使用PySpark在表存在的情况下写入Microsoft SQL Server表_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 如何使用PySpark在表存在的情况下写入Microsoft SQL Server表

Apache spark 如何使用PySpark在表存在的情况下写入Microsoft SQL Server表,apache-spark,pyspark,Apache Spark,Pyspark,我有一个PySpark代码,它像这样写入SQL Server数据库 df.write.jdbc(url=url, table="AdventureWorks2012.dbo.people", properties=properties) 但问题是,我希望继续在表中写入people,即使该表存在,并且我在Spark文档中看到可能存在选项error、append、overwrite和ignore for mode,所有这些选项都会抛出错误,如果该表已经存在于数据库中,则该对象已经存在 火花抛跟误

我有一个PySpark代码,它像这样写入SQL Server数据库

 df.write.jdbc(url=url, table="AdventureWorks2012.dbo.people", properties=properties)
但问题是,我希望继续在表中写入people,即使该表存在,并且我在Spark文档中看到可能存在选项error、append、overwrite和ignore for mode,所有这些选项都会抛出错误,如果该表已经存在于数据库中,则该对象已经存在

火花抛跟误差 py4j.protocol.Py4JJavaError:调用o43.jdbc时出错。 com.microsoft.sqlserver.jdbc.SQLServerException:数据库中已存在名为“people”的对象

即使表已经存在,也有办法将数据写入表中吗?
请让我知道您需要更多的解释

以便
追加
覆盖
模式不会在表已经存在时抛出错误。从spark文档()
SaveMode.Append
will“将数据帧保存到数据源时,如果数据/表已经存在,则数据帧的内容将被追加到现有数据中。”和
SaveMode.Overwrite
will“覆盖模式意味着在将数据帧保存到数据源时,如果数据/表已经存在,则现有数据将被数据帧的内容覆盖。“根据您希望如何处理现有表,这两个表中的一个可能会满足您的需要。

对我来说,问题在于Spark 1.5.2。它检查表是否存在()的方法是运行
从$table LIMIT 1中选择1
。如果查询失败,则表不存在。即使在该表存在时,该查询也失败


这已在1.6.0()中从$table(其中1=0)更改为
SELECT*。

@Holden我加载的数据如下
df.write.jdbc(url=url,table=“AdventureWorks2012.dbo.people”,mode=“overwrite”,properties=properties)
是否有错误,因为它仍然给出错误:com.microsoft.sqlserver.jdbc.SQLServerException:数据库中已经有一个名为“people”的对象
?我正在使用spark 1.5在保存模式下覆盖spark将删除表(如果表存在),运行查询的用户是否有删除表的权限?@Holden Yes用户有删除表的权限。我测试权限,甚至通过使用与连接时使用的相同用户名删除表。。