You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks JDBC连接失败返回403状态码,求故障原因

Azure Databricks JDBC连接403错误原因分析

问题场景

尝试通过Java JDBC连接Azure Databricks,代码如下:

package digital.eComm.ui.tests;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabricksSetup {

    public static void main(String[] args) throws SQLException {
        String url = "jdbc:databricks://XXXX.azuredatabricks.net:443/default;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/XXXXX;AuthMech=3;UID=token;PWD=XXXXXX";
        String username = "token";
        String password = "XXXX"; //Token generated from databricks profile page.

        Connection connection = DriverManager.getConnection(url, username, password);

        System.out.println("Database connected!");
        if (connection != null) {
            System.out.println("Connection Established");

        } else {
            System.out.println("Connection Failed");
        }
    }
}

已添加的依赖:

"com.databricks:databricks-jdbc:2.6.25"

运行后抛出异常:

Exception in thread "main" java.sql.SQLException: [Databricks][DatabricksJDBCDriver](500593) Communication link failure. Failed to connect to server. Reason: HTTP Response code: 403, Error message: Unknown.
        at com.databricks.client.hivecommon.api.HS2Client.handleTTransportException(Unknown Source)
        at com.databricks.client.spark.jdbc.DowloadableFetchClient.handleTTransportException(Unknown Source)
        at com.databricks.client.hivecommon.api.HS2Client.openSession(Unknown Source)
        at com.databricks.client.hivecommon.api.HS2Client.<init>(Unknown Source)
        at com.databricks.client.spark.jdbc.DowloadableFetchClient.<init>(Unknown Source)
        at com.databricks.client.spark.jdbc.DownloadableFetchClientFactory.createClient(Unknown Source)
        at com.databricks.client.hivecommon.core.HiveJDBCCommonConnection.connectToServer(Unknown Source)
        at com.databricks.client.spark.core.SparkJDBCConnection.connectToServer(Unknown Source)
        at com.databricks.client.hivecommon.core.HiveJDBCCommonConnection.establishConnection(Unknown Source)
        at com.databricks.client.spark.core.SparkJDBCConnection.establishConnection(Unknown Source)
        at com.databricks.client.jdbc.core.LoginTimeoutConnection.connect(Unknown Source)
        at com.databricks.client.jdbc.common.BaseConnectionFactory.doConnect(Unknown Source)
        at com.databricks.client.jdbc.common.AbstractDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:247)
        at digital.eComm.ui.tests.DatabricksSetup.main(DatabricksSetup.java:16)
    Caused by: com.databricks.client.support.exceptions.ErrorException: [Databricks][DatabricksJDBCDriver](500593) Communication link failure. Failed to connect to server. Reason: HTTP Response code: 403, Error message: Unknown.
        ... 16 more

错误原因分析

HTTP 403状态码代表权限禁止访问,结合Databricks JDBC连接场景,可能的原因包括:

  • Token无效或权限不足:生成的个人访问令牌(PAT)可能已过期、被撤销,或者没有足够的权限访问指定的Databricks集群/SQL仓库。需确认令牌权限范围,至少需要sql_access或all权限。
  • URL参数错误:
    • httpPath参数不正确:需确认是对应SQL仓库或集群的正确HTTP路径。集群路径格式为sql/protocolv1/o/<org-id>/<cluster-id>,SQL仓库路径需从仓库详情页复制完整路径。
    • 认证参数重复传递:URL中已包含UID=token;PWD=XXXXXX,同时又通过getConnection方法传入username和password,可能导致认证冲突。建议只保留一种传递方式。
  • 网络或防火墙限制:运行代码的环境无法访问Azure Databricks端点,或者IP地址未被加入Databricks工作区的允许列表,导致请求被拦截返回403。
  • JDBC驱动版本问题:使用的databricks-jdbc:2.6.25版本较旧,可能存在兼容性问题,建议升级到最新稳定版本。

内容的提问来源于stack exchange,提问作者SeleniumUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:15:41