Databricks JDBC Driver を使用して Databricks への接続を構成する

このページでは、 Databricks JDBC Driver バージョン 3 以降を使用して Databricks への接続を構成する方法について説明します。

接続を構成する

JDBC ドライバーを使用して Azure Databricks ワークスペースに接続するには、ワークスペースのサーバー ホスト名、コンピューティング リソース設定、認証資格情報などの接続設定を指定する必要があります。

JDBC ドライバーは、ジョブ コンピューティングへの接続をサポートしていません。

これらのプロパティを JDBC 接続 URL に設定するか、 DriverManager.getConnection メソッドに渡すか、両方を組み合わせて使用します。 特定のアプリ、クライアント、SDK、API、または SQL ツールを使用して接続するのに最適な方法については、プロバイダーのドキュメントを参照してください。

JDBC 接続 URL の形式は以下に従う必要があります。 プロパティの大文字と小文字は区別されません。

jdbc:databricks://<server-hostname>:<port>/<schema>;[property1]=[value];[property2]=[value];...

この代わりに、java.util.Properties クラスまたは組み合わせによって設定を指定することもできます。

String url = "jdbc:databricks://<server-hostname>:<port>/<schema>";
Properties properties = new java.util.Properties();
properties.put("<property1>", "<value1");
properties.put("<property2>", "<value2");
// ...
Connection conn = DriverManager.getConnection(url, properties);
String url = "jdbc:databricks://<server-hostname>:<port>/<schema>;[property1]=[value];[property2]=[value];";
Connection conn = DriverManager.getConnection(url, "token", "12345678901234667890abcdabcd");

接続 URL 要素については、以下の表で説明するとおりです。

認証プロパティ、SQL 構成プロパティ、ログ プロパティなど、追加のプロパティについては、「 サポートされている接続プロパティ」を参照してください。

URL 要素とプロパティの大文字と小文字は区別されません。

URL 要素またはプロパティ 説明
<server-hostname> Azure Databricks コンピューティング リソースのサーバー ホスト名の値。
<port> Azure Databricks のコンピューティングリソースにおけるポートの値。 既定値は 443 です。
<schema> スキーマの名前です。 または、 ConnSchema プロパティを設定します。 サポートされている接続プロパティを参照してください。
httpPath Azure Databricks コンピューティング リソースの HTTP パス値。 コネクタは、接続 URL で指定されたホストとポートに httpPath 値を付加することで、接続先の HTTP アドレスを形成します。 たとえば、HTTP アドレス http://localhost:10002/cliservice に接続するための接続 URL は次のようなものになります: jdbc:databricks://localhost:10002;httpPath=cliservice

Azure Databricks クラスターの JDBC 接続 URL を取得するには、以下のようにします。

  1. Azure Databricks ワークスペースにログインします。
  2. サイドバーで、[ コンピューティング] をクリックし、ターゲット クラスターの名前をクリックします。
  3. [構成] タブで、[詳細オプション] を展開します。
  4. [JDBC/ODBC] タブをクリックします。
  5. JDBC 接続 URL として使用する JDBC URL をコピーするか、サーバー ホスト名ポート、および HTTP パス フィールドの値から URL を作成します。

Databricks SQL ウェアハウスの JDBC 接続 URL を取得するには、以下のようにします。

  1. Azure Databricks ワークスペースにログインします。
  2. サイドバーで、[ SQL Warehouses] をクリックし、ターゲット ウェアハウスの名前をクリックします。
  3. [接続の詳細] タブをクリックします。
  4. JDBC 接続 URL として使用する JDBC URL をコピーするか、サーバー ホスト名ポート、および HTTP パス フィールドの値から URL を作成します。

クエリ タグを構成する

Important

この機能は、プライベート プレビューにあります。 アクセス権を要求するには、アカウント チームにお問い合わせください。

追跡と分析のために、SQL クエリにキー値タグをアタッチします。 クエリの識別と分析のために、 system.query.history テーブルにタグが表示されます。

接続にクエリ タグを追加するには、JDBC URL に query_tags プロパティを含めます。

jdbc:databricks://<server-hostname>:<port>/<schema>;query_tags=key1:value1,key2:value2

クエリ タグでは、コンマ区切りのキーと値のペア形式が使用されます。

  • query_tags=key:value (単一タグ)
  • query_tags=key1:value1,key2:value2,key3:value3 (複数のタグ)

プロキシ接続を構成する

Databricks に直接接続するのではなく、プロキシ サーバー経由で接続するようにコネクタを構成します。 コネクタは、プロキシ サーバー経由で接続するときの基本認証と SPNEGO 認証をサポートします。 サポートされている接続プロパティを参照してください。

システム レベルのプロキシ設定を使用するには、 UseProxy=1UseSystemProxy=1を設定します。

プロキシ設定を手動で構成するには:

  1. UseProxy=1 を設定します。
  2. ProxyHostProxyPort、およびProxyIgnoreListを設定します。
  3. プロキシ サーバーで認証するには、次の 1 つの方法を選択します。
    • 基本: ProxyAuth=1ProxyUID、および ProxyPWDを設定します。
    • SPNEGO (Kerberos 環境): システム レベルで Kerberos プリンシパルを認証し、 ProxyAuth=2設定します。

Cloud Fetch のプロキシを構成する

クラウド フェッチには、メイン ドライバー接続とは別のプロキシ構成が必要です。 UseCFProxyCFProxyHostCFProxyPortCFProxyAuthCFProxyUIDCFProxyPwdの接続プロパティを使用して、Cloud Fetch トラフィックをプロキシ経由でルーティングします。 サポートされている接続プロパティを参照してください。

ネットワークがプライベートの場合は、 *.blob.core.windows.net*.store.core.windows.net を許可し、必要な 証明書のダウンロードと失効 を許可リストに追加します。

Troubleshooting

プロキシの問題を解決できない場合は、 EnableQueryResultDownload=0 を設定して Cloud Fetch を無効にし、直接ダウンロードにフォールバックします。

パフォーマンスの問題を診断するには、INFO レベルのログ記録を有効にするように LogLevel=4 を設定します。 ドライバーはチャンクごとのダウンロード速度をログに記録するため、大きな結果セットでは複数のログ行が生成されます。

CloudFetch download speed: 21.24 MB/s
CloudFetch download speed: 20.60 MB/s

ダウンロード速度が約 1 MB/秒を下回ると、ドライバーによって警告が記録されます。 ログ コンポーネントが com.databricks.client.spark.jdbc.ResultFileDownloadHandler。 ダウンロードが遅い場合やストールしている場合は、 CloudFetchThreadPoolSize を増やして、並列でより多くのファイル チャンクをダウンロードします。

SSL の構成

SSL が有効な Databricks ワークスペースに接続している場合は、SSL 対応ソケットに接続するようにコネクタを構成します。 コネクタは、一方向認証を使用してサーバーの ID を確認します。

一方向認証には、署名された信頼された SSL 証明書が必要です。 特定の TrustStore にアクセスするようにコネクタを構成します。 TrustStore を指定しない場合、コネクタは既定の Java TrustStore (jssecacerts) を使用し、jssecacerts が使用できない場合は cacerts を使用します。

SSL を構成するには:

  1. SSL=1 を設定します。
  2. 既定の Java TrustStore を使用していない場合は、カスタムストアを構成します。
    • 署名された信頼されたサーバー証明書を含む TrustStore を作成します。
    • SSLTrustStoreを TrustStore の完全なパスに設定します。
    • SSLTrustStorePwdを TrustStore パスワードに設定します。
    • TrustStore が JKS TrustStore でない場合は、 SSLTrustStoreTypeBCFKS (バウンスキャッスル FIPS キーストア) または PKCS12に設定します。

証明書失効戦略を変更するには、次のプロパティを設定します。

  • CheckCertRevocation: 失効した証明書を受け入れる 0 に設定します。 既定値は、1 です。
  • AcceptUndeterminedRevocation:未確定の失効状態の証明書を受け入れるように 1 に設定します (CRLDP に到達できない場合やタイムアウトした場合など)。 既定値は、0 です。

ドライバーを認証する

JDBC ドライバーの認証の構成については、 Databricks JDBC ドライバーの認証設定を参照してください。