Databricks JDBC ドライバーの認証設定

この記事では、 Databricks JDBC ドライバーの Databricks 認証設定を構成する方法について説明します。

この記事では、この記事で説明されているように、認証設定に追加する次の追加設定が既に収集されていることを前提としています。

Databricks JDBC ドライバーの Databricks 接続を構成するには、コンピュート リソース設定、ドライバー機能設定、および次の認証設定を、JDBC 接続 URL または JDBC 接続プロパティのプログラムによるコレクションに結合する必要があります。

JDBC 接続 URL は、次の形式を使用します。

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]

JDBC接続プロパティのプログラムによるコレクションは、次の例のようなJavaコードで使用できます。

package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class Main {
  public static void main(String[] args) throws Exception {
    Class.forName("com.databricks.client.jdbc.Driver");
    String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
    Properties p = new java.util.Properties();
    p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
    p.put("<setting1>", "<value1");
    p.put("<setting2>", "<value2");
    p.put("<settingN>", "<valueN");
    try (Connection conn = DriverManager.getConnection(url, p)) {
      Statement stmt = conn.createStatement();
      try (ResultSet rs = stmt.executeQuery("<query>")) {
        ResultSetMetaData md = rs.getMetaData();
        String[] columns = new String[md.getColumnCount()];
        for (int i = 0; i < columns.length; i++) {
          columns[i] = md.getColumnName(i + 1);
        }
        while (rs.next()) {
          System.out.print("Row " + rs.getRow() + "=[");
          for (int i = 0; i < columns.length; i++) {
            if (i != 0) {
              System.out.print(", ");
            }
            System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
          }
          System.out.println(")]");
        }
      }
    }
    System.exit(0);
  }
}
  • DATABRICKS_SERVER_HOSTNAME 環境と DATABRICKS_HTTP_PATH 環境の値を、それぞれターゲットの Databricks コンピュート リソースの [サーバー ホスト名] と [HTTP パス] の値に設定します。これらの値を取得するには、「 Databricks JDBC ドライバーのコンピュート設定」を参照してください。 環境変数を設定するには、オペレーティングシステムのマニュアルを参照してください。

  • 次のセクションにリストされているように、必要に応じて各接続プロパティの <setting><value> を置き換えます。

  • また、通常、追加の<setting><value>のペアとして、特別なドライバー機能設定または高度なドライバー機能設定を追加することもできます。

  • この例では、 <query> を SQL SELECT クエリ文字列に置き換えます。

接続 URL と接続プロパティのコレクションのどちらを使用するかは、ターゲット アプリ、ツール、クライアント、SDK、または API の要件によって異なります。 この記事では、サポートされている Databricks 認証の種類ごとに、JDBC 接続 URL の例と JDBC 接続プロパティのプログラムによるコレクションについて説明します。

Databricks JDBC ドライバーでは、Databricks 個人用アクセストークンを使用した認証がサポートされています。 個人用アクセストークンを作成するには、次の操作を行います。

  1. Databricksワークスペースで、上部バーにあるDatabricksユーザー名をクリックし、ドロップダウンから [ユーザー設定] を選択します。

  2. [ 開発者] をクリックします。

  3. [アクセストークン] の横にある [管理] をクリックします。

  4. [ 新しいトークンの生成] をクリックします。

  5. (任意)今後このトークンを識別するのに役立つコメントを入力し、トークンのデフォルトの有効期間である90日を変更します。有効期間のないトークンを作成するには(非推奨)、[有効期間 (日) ] ボックスを空白のままにしてください。

  6. [生成] をクリックします。

  7. 表示されたトークンを安全な場所にコピーし、[完了] をクリックします。

注:

コピーしたトークンは、必ず安全な場所に保存してください。 コピーしたトークンを他のユーザーと共有しないでください。 コピーしたトークンを紛失した場合、まったく同じトークンを再生成することはできません。 代わりに、この手順を繰り返して新しいトークンを作成する必要があります。 コピーしたトークンを紛失した場合、またはトークンが侵害されたと思われる場合は、アクセストークン ページでトークンの横にあるごみ箱 (取り消し) アイコンをクリックして、ワークスペースからそのトークンをすぐに削除することを強くお勧めします。

ワークスペースでトークンを作成または使用できない場合は、ワークスペース管理者がトークンを無効にしたか、トークンを作成または使用する権限を与えていないことが原因である可能性があります。ワークスペース管理者に問い合わせるか、以下をご覧ください。

Databricks 個人用アクセストークンを使用して認証するには、次の構成を設定します。

一般構成プロパティと機密性の高い資格情報プロパティが埋め込まれた JDBC 接続 URL の場合:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>

JDBC接続URLの外部で設定された一般的な構成プロパティと機密性の高いクレデンシャル・プロパティを持つJavaコードの場合:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "3");
p.put("UID", "token");
p.put("PWD", "<personal-access-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • 上記のコード・スニペットを独自のニーズに適合させることができる完全なJavaコード例については、この記事の冒頭にあるコード例を参照してください。

  • 上記の URL または Java コードで、 <personal-access-token> をワークスペース ユーザーの Databricks 個人用アクセストークンに置き換えます。

  • <server-hostname><http-path>の値を取得するには、「Databricks JDBC ドライバーのコンピュート設定」を参照してください。