使用JDBC连接Databricks默认集群读取表至PySpark DataFrame异常求助
问题解决:Databricks JDBC读取表返回重复列名而非真实数据
可能原因分析
出现返回结果全是列名的情况,通常是以下问题导致:
- 表名引用未指定完整的数据库+表名路径
- JDBC URL参数存在冗余或配置错误
- 驱动版本与Databricks集群版本不兼容
分步解决方案
1. 修正表名引用方式
将dbtable选项从my_table2改为完整表名格式:default.my_table2,明确指定默认数据库下的目标表。修改后代码片段:
df_1 = spark.read.format("jdbc")\ .option("url", url)\ .option("driver", driver_class)\ .option("dbtable", 'default.my_table2')\ .load()
2. 清理JDBC URL冗余参数
你的URL中重复写了两次AuthMech=3,建议清理为标准格式:
url = 'jdbc:databricks://[workspace domain]:443/default;transportMode=http;ssl=1;AuthMech=3;httpPath=[path];UID=token;PWD=[your_access_token]'
3. 改用Query方式验证
若上述修改无效,尝试通过query选项直接执行SQL查询,绕过表名解析问题:
df_1 = spark.read.format("jdbc")\ .option("url", url)\ .option("driver", driver_class)\ .option("query", "SELECT name FROM default.my_table2")\ .load()
4. 验证驱动兼容性
确保com.databricks.client.jdbc.Driver版本与你的Databricks集群版本匹配,可下载对应版本的JDBC驱动并放置到Spark的classpath中。
5. 检查权限与连接参数有效性
确认访问Token具备my_table2表的读取权限,同时验证JDBC URL中的httpPath是集群详情页"JDBC/ODBC"标签下的正确连接路径。
内容的提问来源于stack exchange,提问作者yu zhang
相关产品推荐
相关产品推荐

