截断数据块上的表

Truncate tables on databricks

我在 Azure 中使用两个环境:Databricks 和 SQL 数据库。我正在使用一个生成数据框的函数,它将用于覆盖存储在 SQL 数据库中的 table。我有很多问题,因为 df.write.jdbc(mode = 'overwrite') 只删除 table 而且我猜,我的用户没有再次创建的正确权限(我'我已经看到我需要这样做以获得 DML 和 DDL 许可)。在简历中,我的函数只删除了 table 但没有重新创建。

我们讨论可能是什么问题,我们得出结论,也许我能做的最好的事情就是截断 table 并在那里重新添加新数据。我正在尝试找到截断 table 的方法,我尝试了这两种方法,但找不到与此相关的更多信息:

df.write.jdbc()

&

spark.read.jdbc()

你能帮我做这些吗?覆盖不起作用(也许我没有足够的权限)并且我无法弄清楚如何使用 jdbc.

截断 table

它在Spark documentation - 你需要在写的时候加上truncate:

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

此外,如果您有大量数据,那么使用 Microsoft's Spark connector for SQL Server 可能更好 - 它有一些性能优化,应该允许写入更快。

您可以创建用于在 SQL 服务器中截断或删除的存储过程,并使用 ODBC 连接在数据块中调用该存储过程。