首页 > 解决方案 > 通过spark从azure sql表中删除数据

问题描述

我在 azure sql 数据库中有一个表。我想使用 pyspark 中的 jdbc 连接器从中删除一些数据。

我试过这个

query=delete from table where condition

spark.read\
    .format("com.microsoft.sqlserver.jdbc.spark") \
    .option("url", 'jdbcurl') \
    .option("database", 'db') \
    .option("user", "user") \
    .option("password", "pass") \
    .option("query",query)

但这似乎不起作用。我不能做 .load() 因为 delete 不返回任何东西,它给了我一个错误。

我在这里找到了一个解决方案,它在 scala 中使用自定义定义的函数,但我想在 python 中执行它。有没有办法做到这一点?

标签: pythonapache-sparkpysparkazure-sql-server

解决方案


除非您不使用 Delta,否则 Apache Spark 不支持这些类型的查询。为此,您首先需要使用 pyodbc 创建一个数据库连接。然后尝试像这样运行您的查询:

connection.execute("delete statement")

推荐阅读