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

使用PySpark通过JDBC访问Azure Databricks时行显示为列名的问题求助

问题描述

通过PySpark使用JDBC访问Azure Databricks时,查询返回的所有行均显示为列名。示例代码及输出如下:

df = spark.read.format("jdbc")
.option("url", "jdbc:databricks://<WorkspaceInstance>... <Token>")
.option("query", "query")
.option("user", "username")
.option("password", token)
.option("fetchsize", "10")
.option("driver", "com.databricks.client.jdbc.Driver")
.load()

df.show()

输出:

+------------+
|CustomerName|
+------------+
|CustomerName|
|CustomerName|
|CustomerName|
+------------+
解决方案
  • 修正JDBC URL格式:Azure Databricks的JDBC URL需包含完整正确的参数,标准格式为:

    jdbc:databricks://<workspace-instance>:443;HttpPath=<http-path>;AuthMech=3;UID=token;PWD=<your-personal-access-token>
    

    必须指定HttpPath(可从Databricks工作区的JDBC/ODBC配置页面获取),AuthMech=3表示采用令牌认证,无需单独设置user参数。

  • 检查查询语句:确认query参数中的SQL语句无语法错误。如果误将列名用单引号包裹(如SELECT 'CustomerName' FROM your_table),会返回字符串常量而非列数据,需改为SELECT CustomerName FROM your_table这类正确的查询语句。

  • 匹配驱动版本:确保使用的JDBC驱动版本与Databricks Runtime版本兼容,版本不匹配可能导致数据解析异常。

  • 调整认证参数:使用令牌认证时,无需设置user参数,直接在URL中通过UID=token和PWD=<token>完成认证;或者将user设为token,password设为你的个人访问令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:52:17