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 Web Appの診断ログのエクスポート先が同じリージョンのストレージしか選べない

タイトル通りです。

複数あるWeb Appのログを同一のストレージBlobに出したかったのですが、特定のWeb Appのみ出力先のストレージが表示されませんでした。何故かと思い、きちんと表示されているものと見比べると、作成されたリージョンが違っていました。どうやらWeb Appは自身と同じリージョンにしかエクスポートできないみたいでした。

Web App自体のリージョンを動かせない仕様だったので、出力先も分散させることにしました。

Application Insightsなどは出力先のリージョン自体を選択できるので、それと同じようになってほしいと思います。

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コア)で動かすことはできるのですが、それだと並列動作をさせることが出来ないので、サポートに頼んでコア数を増やしてもらい、動作させることが出来ました。

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

MNP5月分収支

Azureでは毎月の使用量と料金を明細としてダウンロードできるので、MPN(Microsoft Partner Network)で使用した分について大雑把にまとめてみました。

Azure5月使用料

仮想マシン系(IPアドレスやデータ転送含む) ¥7849
ストレージ系(データ転送含む) ¥956
Key Vault ¥0
合計 ¥8758

仮想マシンとストレージは2台で、A4やF8と言った通常のデスクトップ物理マシンに近いクラスにしていました。クレジット限界である¥11500を超えないようにちょくちょく電源をOFFにしていましが、全体としては76%程度の使用なので、もう少し使っていても良かったです。

ストレージやデータベースは一度作ってしまうと中々消せないので、固定費として考えた方がいいかもしれません。