本文說明如何使用 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:
- 登入您的 Azure Databricks 工作區。
- 在側邊欄中,點擊 [計算],然後點擊目標叢集的名稱。
- 在 [設定] 索引標籤上,展開 [進階選項]。
- 按一下JDBC/ODBC 標籤。
- 複製 JDBC URL 作為 JDBC 連線 URL,或從 Server 主機名、埠和 HTTP 路徑 字段中的值建構 URL。
若要取得 Databricks SQL 倉庫的 JDBC 連接 URL:
- 登入您的 Azure Databricks 工作區。
- 在側邊欄中,點擊SQL 倉儲,然後點擊目標倉儲的名稱。
- 單擊 連線詳細資訊 索引標籤。
- 複製 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 連線:
- 將
UseProxy屬性設定為 1。 - 若要在系統層級設定 Proxy 設定,請將
UseSystemProxy屬性設定為 1,否則請以下列方式設定驅動程式的 Proxy 設定:- 將
ProxyHost屬性設定為 Proxy 伺服器的 IP 位址或主機名。 - 將
ProxyPort屬性設定為 Proxy 伺服器用來接聽用戶端連線的埠。 - 將
ProxyIgnoreList屬性設定為逗號分隔主機名。 - 使用 Proxy 伺服器進行驗證:
- 使用基本身份驗證
- 將
ProxyAuth屬性設定為 1。 - 將
ProxyUID屬性設定為存取伺服器的用戶名稱。 - 將
ProxyPWD屬性設定為您的密碼,以存取伺服器。
- 將
- 若要使用 SPNEGO 驗證:
- 在系統層級驗證您的 Kerberos 主體。
- 將
ProxyAuth屬性設定為 2。
- 使用基本身份驗證
- 將
若要特別針對 CloudFetch 使用不同的 Proxy,請使用下列屬性遵循上述步驟:UseCFProxy、CFProxyHost、CFProxyPort、CFProxyAuth、CFProxyUID、CFProxyPwd
設定 SSL
如果您要連線到啟用了SSL的Databricks,您可以設定連線器以使用SSL進行連線。 透過 SSL 連線到伺服器時,連接器會使用單向驗證來驗證伺服器的身分識別。
單向驗證需要已簽署的受信任 SSL 憑證,才能驗證伺服器的身分識別。 您可以設定連接器來存取包含適當憑證的特定 TrustStore。 如果您未指定 TrustStore,則連接器會使用名為 jssecacerts 的預設 Java TrustStore。 如果 jssecacerts 無法使用,則連接器會改用 cacerts。
若要設定 SSL:
- 將 SSL 屬性設定為 1。
- 如果您未使用其中一個預設的 Java 信任存放區,請建立信任存放區,並將連接器設定為使用它:
- 建立包含已簽署信任伺服器證書的信任存放區。
- 將 SSLTrustStore 屬性設定為 TrustStore 的完整路徑。
- 將 SSLTrustStorePwd 屬性設定為存取 TrustStore 的密碼。
- 如果 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 服務主體
- Azure 託管服務主體
- Azure 受控識別(系統指派或使用者指派)
使用 Databricks 受控服務主體的 M2M
若要使用 Databricks 受控服務主體設定驗證:
- 建立 Databricks 受控服務主體,並將它指派給 Databricks 帳戶和工作區。
- 建立 Databricks OAuth 機密以用於服務主體。 請參閱 OAuth M2M 安裝指南。
- 將訪問許可權授與 叢集 和 SQL 倉儲。
- 將下列屬性新增至您現有的 JDBC 連線 URL 或
java.util.Properties物件:
| 財產 | 價值觀 |
|---|---|
AuthMech |
11 |
Auth_Flow |
1 |
OAuth2ClientID |
服務主體 的應用程式 (用戶端) 識別碼 值。 |
OAuth2Secret |
服務主體的 Azure Databricks OAuth 密鑰。 |
使用 Azure 管理服務主體的 M2M
若要使用 Azure 受控服務主體設定驗證:
- 建立 Databricks OAuth 機密以用於服務主體。 請參閱 OAuth M2M 安裝指南。
- 將訪問許可權授與 叢集 和 SQL 倉儲。
- 將下列屬性新增至您現有的 JDBC 連線 URL 或
java.util.Properties物件:
| 財產 | 價值觀 |
|---|---|
AuthMech |
11 |
Auth_Flow |
1 |
OAuth2ClientID |
服務主體 的應用程式 (用戶端) 識別碼 值。 |
AzureTenantID |
在 Azure Active Directory 中找到的 Azure 租使用者識別碼 。 |
OAuth2Secret |
服務主體的 Azure Databricks OAuth 密鑰。 |
利用 Azure 受管理識別技術的機器對機器通信
若要使用 Azure 受控識別來設定驗證:
- 設定 Azure 資源的受控識別。
- 將訪問許可權授與 叢集 和 SQL 倉儲。
- 將下列屬性新增至您現有的 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,做為字串。 |
PWD 或 password |
您的 Azure Databricks 個人存取令牌值,以字串表示。 |