使用 Databricks JDBC 驱动程序配置与 Databricks 的连接

本页演示如何使用 Databricks JDBC 驱动程序版本 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 元素或属性 DESCRIPTION
<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,或从“服务器主机名”、“端口”和“HTTP 路径”字段中的值构造 URL。

若要获取 Databricks SQL 仓库的 JDBC 连接 URL,请执行以下操作:

  1. 登录到 Azure Databricks 工作区。

  2. 在边栏中,单击“SQL 仓库”,然后单击目标仓库的名称。

  3. 单击“连接详细信息”选项卡。

  4. 复制 JDBC URL 以用作 JDBC 连接 URL,或从“服务器主机名”、“端口”和“HTTP 路径”字段中的值构造 URL。

配置查询标记

重要

此功能以个人预览版提供。 若要请求访问权限,请联系你的帐户团队。

将键值标记附加到 SQL 查询以进行跟踪和分析。 标记显示在 system.query.history 表中用于查询标识和分析。

若要将查询标记添加到连接,请在 query_tags JDBC URL 中包含该属性:

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. 设置ProxyHostProxyPortProxyIgnoreList
  3. 若要使用代理服务器进行身份验证,请选择一种方法:
    • 基本:设置 ProxyAuth=1ProxyUIDProxyPWD
    • SPNEGO (Kerberos 环境):在系统级别对 Kerberos 主体进行身份验证,然后设置 ProxyAuth=2

为 Cloud Fetch 配置代理

Cloud Fetch 需要独立于主驱动程序连接的代理配置。 使用 UseCFProxyCFProxyHostCFProxyPortCFProxyAuthCFProxyUIDCFProxyPwd 连接属性,通过代理服务器路由 Cloud Fetch 流量。 请参阅 支持的连接属性

如果网络是专用的,则允许 *.blob.core.chinacloudapi.cn*.store.core.chinacloudapi.cn,并将所需的证书下载和吊销添加到允许列表。

故障排除

如果无法解决代理问题,请设置为 EnableQueryResultDownload=0 禁用 Cloud Fetch 并回退到直接下载。

若要诊断性能问题,请将 LogLevel=4 设置为启用 INFO 级别的日志记录。 驱动程序记录每个区块的下载速度,因此大型结果集生成多个日志行:

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 的套接字。 连接器使用单向身份验证来验证服务器的标识。

单向身份验证需要签名的受信任 SSL 证书。 配置连接器以访问特定的 TrustStore。 如果未指定 TrustStore,连接器将使用默认Java TrustStore(jssecacerts),或者如果 jssecacerts 不可用,则使用 cacerts。

配置 SSL:

  1. 设置 SSL=1
  2. 如果未使用默认Java TrustStore,请配置自定义存储:
    • 创建包含已签名的受信任服务器证书的 TrustStore。
    • SSLTrustStore 设置为 TrustStore 的完整路径。
    • 请将 SSLTrustStorePwd 设置为 TrustStore 密码。
    • 如果 TrustStore 不是 JKS TrustStore,则将其设置为 SSLTrustStoreType (BouncyCastle FIPS 密钥存储) 或 BCFKS

若要更改证书吊销策略,请设置以下属性:

  • CheckCertRevocation:设置为 0 接受已吊销的证书。 默认值为 1
  • AcceptUndeterminedRevocation:将其设置为 1 以接受撤销状态不确定的证书(例如,当 CRLDP 无法访问或超时时)。 默认值为 0

对驱动程序进行身份验证

有关为 JDBC 驱动程序配置身份验证的信息,请参阅 Databricks JDBC 驱动程序的身份验证设置