Нажмите DML-команды для SQL, используя Pyspark на Databricks - PullRequest
0 голосов
/ 10 ноября 2019

Я использую блоки данных Azure и хочу отправить запрос к Azure SQL с помощью PySpark. Я пробовал много способов и нашел решение с использованием Scala (код ниже), но для этого мне нужно преобразовать часть своего кода в scala, а затем снова вернуть в PySpark.

%scala
import java.util.Properties
import java.sql.DriverManager

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

// Create the JDBC URL without passing in the user and password parameters.
val jdbcUrl = "entire-string-connection-to-Azure-SQL"

// Create a Properties() object to hold the parameters.
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 = "TRUNCATE TABLE dbo.table"

stmt.execute(sql)
connection.close()

Есть ли способдобиться нажатия DML-кода, используя PySpark вместо языка Scala?

Нашел что-то связанное, но работает только для чтения данных и команд DDL:

jdbcUrl = "jdbc:mysql://{0}:{1}/{2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword,
  "driver" : "com.mysql.jdbc.Driver"
}

pushdown_query = "(select * from employees where emp_no < 10008) emp_alias"
df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, properties=connectionProperties)
...