共用方式為


使用 Databricks JDBC 驅動程式設定與 Databricks 的連線

本文說明如何使用 Databricks JDBC 驅動程式 3 版和更新版本來設定 Databricks 的連線。

設定連線

若要使用 JDBC 驅動程式連線到 Azure Databricks 工作區,您必須指定各種連線設定,例如 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 路徑值。 連接器會將 httpPath 值附加至連線 URL 中指定的主機和埠,以形成要連接的 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,或從 Server 主機名HTTP 路徑 字段中的值建構 URL。

若要取得 Databricks SQL 倉庫的 JDBC 連接 URL

  1. 登入您的 Azure Databricks 工作區。
  2. 在側邊欄中,點擊SQL 倉儲,然後點擊目標倉儲的名稱。
  3. 單擊 連線詳細資訊 索引標籤。
  4. 複製 JDBC URL 作為 JDBC 連線 URL,或從 Server 主機名HTTP 路徑 字段中的值建構 URL。

設定查詢標籤

這很重要

這項功能處於個人預覽版狀態。 若要要求存取權,請聯絡您的客戶團隊。

您可以將鍵值標籤附加至 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 (多個標籤)

設定 Proxy 連線

您可以將連接器設定為透過 Proxy 伺服器連線,而不是直接連線到 Databricks。 透過 Proxy 伺服器連線時,連接器支援基本和 SPNEGO 驗證。

若要設定 Proxy 連線:

  1. UseProxy 屬性設定為 1。
  2. 若要在系統層級設定 Proxy 設定,請將 UseSystemProxy 屬性設定為 1,否則請以下列方式設定驅動程式的 Proxy 設定:
    1. ProxyHost 屬性設定為 Proxy 伺服器的 IP 位址或主機名。
    2. ProxyPort 屬性設定為 Proxy 伺服器用來接聽用戶端連線的埠。
    3. ProxyIgnoreList 屬性設定為逗號分隔主機名。
    4. 使用 Proxy 伺服器進行驗證:
      • 使用基本身份驗證
        1. ProxyAuth 屬性設定為 1。
        2. ProxyUID 屬性設定為存取伺服器的用戶名稱。
        3. ProxyPWD 屬性設定為您的密碼,以存取伺服器。
      • 若要使用 SPNEGO 驗證:
        1. 在系統層級驗證您的 Kerberos 主體。
        2. ProxyAuth 屬性設定為 2。

若要特別針對 CloudFetch 使用不同的 Proxy,請使用下列屬性遵循上述步驟:UseCFProxyCFProxyHostCFProxyPortCFProxyAuthCFProxyUIDCFProxyPwd

設定 SSL

如果您要連線到啟用了SSL的Databricks,您可以設定連線器以使用SSL進行連線。 透過 SSL 連線到伺服器時,連接器會使用單向驗證來驗證伺服器的身分識別。

單向驗證需要已簽署的受信任 SSL 憑證,才能驗證伺服器的身分識別。 您可以設定連接器來存取包含適當憑證的特定 TrustStore。 如果您未指定 TrustStore,則連接器會使用名為 jssecacerts 的預設 Java TrustStore。 如果 jssecacerts 無法使用,則連接器會改用 cacerts。

若要設定 SSL:

  1. 將 SSL 屬性設定為 1。
  2. 如果您未使用其中一個預設的 Java 信任存放區,請建立信任存放區,並將連接器設定為使用它:
    1. 建立包含已簽署信任伺服器證書的信任存放區。
    2. 將 SSLTrustStore 屬性設定為 TrustStore 的完整路徑。
    3. 將 SSLTrustStorePwd 屬性設定為存取 TrustStore 的密碼。
    4. 如果 TrustStore 不是 JKS TrustStore,請將 SSLTrustStoreType 屬性設定為正確的類型。 支援的型別如下:
      • SSLTrustStoreType=BCFKS (BouncyCastle FIPS Keystore)
      • SSLTrustStoreType=PKCS12 (公鑰密碼編譯標準 #12)

在某些情況下,您想要變更證書吊銷策略時,連接器會提供下列參數:

  • 當設定為 0 時,CheckCertRevocation 屬性將接受撤銷的憑證(屬性的預設值為 1)
    • AcceptUndeterminedRevocation 屬性設定為 1 時,會接受無法識別憑證撤銷狀態的憑證(CRLDP 無法連線/逾時等),此屬性的預設值為 0

驗證驅動程式

您可以使用下列其中一個驗證機制來驗證 JDBC 驅動程式連線:

OAuth 使用者對機器 (U2M) 驗證

JDBC 驅動程式支援 OAuth 使用者到機器(U2M)驗證,以進行即時人工登入並同意驗證目標 Databricks 使用者帳戶。 這也稱為 瀏覽器型 OAuth 驗證。

Azure Databricks 已為客戶建立 OAuth 用戶端標識碼 databricks-sql-jdbc。 這也是 JDBC 驅動程式中使用的預設 OAuth 用戶端識別碼。 若要設定 OAuth U2M 驗證,只要將下列屬性新增至現有的 JDBC 連線 URL 或 java.util.Properties 物件:

財產 價值觀
AuthMech 11
Auth_Flow 2
TokenCachePassPhrase 用來加密快取 OAuth U2M 憑證的密語。 這可防止重複的瀏覽器型驗證。 若要停用憑證快取,請將 EnableTokenCache 設為 0

OAuth 計算機對電腦 (M2M) 驗證

JDBC 驅動程式使用下列其中一個主體或身分識別,支援 OAuth 機器對計算機 (M2M) 驗證,也稱為 OAuth 2.0 用戶端 認證驗證。 請參閱 使用 OAuth 授權服務主體存取 Azure Databricks

使用 Databricks 受控服務主體的 M2M

若要使用 Databricks 受控服務主體設定驗證:

  1. 建立 Databricks 受控服務主體,並將它指派給 Databricks 帳戶和工作區。
  2. 建立 Databricks OAuth 機密以用於服務主體。 請參閱 OAuth M2M 安裝指南
  3. 將訪問許可權授與 叢集SQL 倉儲
  4. 將下列屬性新增至您現有的 JDBC 連線 URL 或 java.util.Properties 物件:
財產 價值觀
AuthMech 11
Auth_Flow 1
OAuth2ClientID 服務主體 的應用程式 (用戶端) 識別碼 值。
OAuth2Secret 服務主體的 Azure Databricks OAuth 密鑰。

使用 Azure 管理服務主體的 M2M

若要使用 Azure 受控服務主體設定驗證:

  1. 建立 Databricks OAuth 機密以用於服務主體。 請參閱 OAuth M2M 安裝指南
  2. 將訪問許可權授與 叢集SQL 倉儲
  3. 將下列屬性新增至您現有的 JDBC 連線 URL 或 java.util.Properties 物件:
財產 價值觀
AuthMech 11
Auth_Flow 1
OAuth2ClientID 服務主體 的應用程式 (用戶端) 識別碼 值。
AzureTenantID 在 Azure Active Directory 中找到的 Azure 租使用者識別碼
OAuth2Secret 服務主體的 Azure Databricks OAuth 密鑰。

利用 Azure 受管理識別技術的機器對機器通信

若要使用 Azure 受控識別來設定驗證:

  1. 設定 Azure 資源的受控識別
  2. 將訪問許可權授與 叢集SQL 倉儲
  3. 將下列屬性新增至您現有的 JDBC 連線 URL 或 java.util.Properties 物件:
財產 價值觀
AuthMech 11
Auth_Flow 3
OAuth2ClientID 受控識別的 用戶端 標識碼。 只有在您使用使用者指派的受控識別時,才需要此參數。
Azure_workspace_resource_id Databricks 工作區的 Azure 資源識別符

Azure Databricks 個人存取令牌

若要使用 Azure Databricks 個人存取令牌驗證 JDBC 驅動程式連線,請將下列屬性新增至您的 JDBC 連線 URL 或 java.util.Properties 物件:

財產 價值觀
AuthMech 3
user token,做為字串。
PWDpassword 您的 Azure Databricks 個人存取令牌值,以字串表示。