I would like to use databricks to run some custom SQL by below function, May I know how to add the “accessToken” as properties?
mssql_url = "jdbc:sqlserver://XXXX.database.windows.net:XXX;database=XXXXX"
connectionProperties1 = {
"accessToken" : access_token
}
driver_manager = spark._sc._gateway.jvm.java.sql.DriverManager
connection = driver_manager.getConnection(mssql_url,connectionProperties1)
connection.prepareCall("EXEC sys.sp_tables").execute()
connection.close()
It return:
py4j.Py4JException: Method getConnection([class java.lang.String, class java.util.HashMap]) does not exist
Thanks!
Advertisement
Answer
It doesn’t work because DriverManager doesn’t have the function that accepts HashMap that is created from Python dict – it has the function that accepts Properties object. You can create instance of properties object the same way as you get DriverManager instance, and then pass this object to the getConnection function:
mssql_url = "jdbc:sqlserver://XXXX.database.windows.net:XXX;database=XXXXX"
connectionProperties1 = {
"accessToken" : access_token
}
# create Properties object from the Python dict
props = spark._sc._gateway.jvm.java.util.Properties()
props.putAll(connectionProperties1)
driver_manager = spark._sc._gateway.jvm.java.sql.DriverManager
connection = driver_manager.getConnection(mssql_url,props)