截断databricks上的表

dpiehjr4  于 2021-07-12  发布在  Spark
关注(0)|答案(2)|浏览(253)

我在azure中使用两个环境:databricks和sql数据库。我正在使用一个函数来生成一个Dataframe,它将用来覆盖存储在sql数据库中的表。我有很多问题,因为df.write.jdbc(mode='overwrite')只会删除表,而且,我猜,我的用户没有正确的权限来再次创建表(我已经看到dml和ddl权限需要这样做)。在resume中,我的函数只会删除表,但不会重新创建。
我们讨论了可能出现的问题,并得出结论,也许我能做的最好的事情是截断表并在那里重新添加新数据。我试图找到如何截断表,我尝试了以下两种方法,但找不到更多与此相关的信息:

df.write.jdbc()

&

spark.read.jdbc()

你能帮我拿这些吗?覆盖不起作用(可能我没有足够的权限),我也不知道如何使用jdbc截断该表。

dwbf0jvd

dwbf0jvd1#

它在spark文档中-您需要添加 truncate 写作时:

df.write.mode("overwrite").option("truncate", "true")....save()

另外,如果您有大量数据,那么最好使用microsoft的spark connector for sql server—它有一些性能优化,可以加快写入速度。

ahy6op9u

ahy6op9u2#

您可以在sql server中创建用于截断或删除的存储过程,并使用odbc连接在databricks中调用该存储过程。

相关问题