将Scala与Azure DW的连接转换为PySpark

时间:2019-03-26 21:50:53

标签: python azure pyspark databricks

我正在尝试在ADW上更新表,但是到目前为止,我发现的唯一途径是通过scala(我不太熟悉),并且我希望与PySpark具有相同的功能。

这是scala代码,但是我在尝试翻译时陷入困境

import java.util.Properties
import java.sql.DriverManager

val jdbcUsername = "xxxxx"
val jdbcPassword = "xxxxx"
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

val jdbcUrl = s"xxxx"

val connectionProperties = new Properties()

connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
connectionProperties.setProperty("Driver", driverClass)

val connection = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword)
val stmt = connection.createStatement()
val sql = "delete from table where condition"

stmt.execute(sql)
connection.close()

我认为必须有一种使用PySpark在Azure SQL上执行命令的通用方法,但是我还没有找到它。

1 个答案:

答案 0 :(得分:0)

听起来您想直接在Python中为Azure Databricks在Azure SQL数据库的表上执行删除操作,但我试图意识到它失败了,因为无法为pyodbc安装linux odbc驱动程序和pymssql

以下是有关我的测试的屏幕截图。

图1.成功在群集上安装了pymssqlpypyodbc,但在pyodbc上失败了

enter image description here

图2。在尝试连接Azure SQL数据库时遇到了有关缺少Linux odbc驱动程序的问题

enter image description here

因此,除了使用官方教程Use HDInsight Spark cluster to read and write data to Azure SQL database引入的Scala / Java外,使用Python的唯一解决方法是调用Webhook url,该URL实现了来自其他Azure服务(例如Python中的Azure Function)的功能。 / p>