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に読み書きができました。

Azure Databricksを使おうとしてvCPUのクォータに引っかかる

MPNのサブスクリプションでAzure Databricksを試そうとしたらデフォルト設定でvCPUのコア数が足りなかったという話です。

データ分析プラットフォームの調査をしていて、HDInsightやData Lake AnalyticisとともにAzure Databricksを試そうとしました。HDInsightとAzure Databricksは動作基盤が仮想マシンなので、作成時にインスタンスを用意する必要があります。

HDInsightはHDInsight用の60コア分の確保領域?のようなものが用意されていたのですが、Azure Databricksは通常の仮想マシンと共用になっていました。

MPN自体はデフォルトで一つのリージョン当たり、10コアまでしか用意されておらず、Databricksを3台(12コア)で動かそうとしたらコア数が足りず、作成時にエラーになってしまいました。一応、最低条件では2台(8コア)で動かすことはできるのですが、それだと並列動作をさせることが出来ないので、サポートに頼んでコア数を増やしてもらい、動作させることが出来ました。

サポートは当日中に対応してくれたのでありがたかったです。