Azure DatabricksのデータソースでAzure SQL Databaseに接続できない(Python)

Azure DatabricksのJDBCドライバを使ってAzure SQL Databaseにデータを保存したかったのですが、失敗してしばらく悩みました。Scala版はうまくいくのですが、Python版で失敗します。

これは結論から言うと、サンプルが間違っていたからでした。正しいコードを記述するとうまく接続できました。

具体的には

https://docs.azuredatabricks.net/spark/latest/data-sources/sql-databases.html

のPython Exampleの説明に従い、URLを以下のように定義していました。

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

しかし、上記だとPort番号がおかしいと言うエラーになります。

正しくは、

jdbcUrl = "jdbc:sqlserver://{0};{1};database:{2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword,
  "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

とすべきです。

これできちんとSQL Databaseに読み書きができました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です