Databricks Connect 13.3无法找到远程Spark会话连接参数问题
Databricks Connect v13升级后SparkSession创建失败的解决办法
核心差异说明
Databricks Connect v13基于Spark Connect架构,和v11的旧远程模式逻辑完全不同,v11中直接创建SparkSession的方式在v13中不再适用,必须显式指定远程会话。
具体解决步骤
1. 修改代码适配Spark Connect模式
v13中不能再用SparkSession.builder.getOrCreate()直接创建会话,必须添加.remote()方法来指定使用远程连接:
from pyspark.sql import SparkSession # 替换原有的getOrCreate()调用 spark = SparkSession.builder.remote().getOrCreate()
2. 修正环境变量或配置文件格式
- SPARK_REMOTE格式修正:你的环境变量格式有误,正确格式需去掉路径中的
/,参数用分号直接分隔:export SPARK_REMOTE="sc://adb-xxxx.7.azuredatabricks.net:15001;token=xxx-2;x-databricks-cluster-id=xxx" - .databricks-connect文件验证:确保主目录下的该文件是合法JSON格式,权限为当前用户可读,示例内容:
注意:同时设置{ "host": "https://adb-xxx.7.azuredatabricks.net", "token": "xxxx-2", "cluster_id": "yyyy", "port": 15001 }SPARK_REMOTE和.databricks-connect时,SPARK_REMOTE会覆盖配置文件,优先保证前者格式正确。
3. 先验证基础连接是否正常
在运行pytest前,先用以下步骤确认连接有效:
- 执行
databricks-connect test命令,检查集群连接、权限是否正常。 - 运行一段极简测试代码验证SparkSession创建:
若这段代码能正常输出结果,说明基础配置没问题。from pyspark.sql import SparkSession spark = SparkSession.builder.remote().getOrCreate() print(spark.range(10).count())
4. 确保pytest能获取到环境变量
pytest可能不会自动继承shell的环境变量,可直接在运行时传入:
SPARK_REMOTE="sc://adb-xxxx.7.azuredatabricks.net:15001;token=xxx-2;x-databricks-cluster-id=xxx" python3 -m pytest
或者在pytest配置文件(如pytest.ini)中添加环境变量配置。
5. 清理旧配置残留
删除v11版本可能留下的干扰文件:
- 备份后删除
~/.spark目录 - 检查全局Spark配置文件(如
spark-defaults.conf),确保没有本地Spark的配置项覆盖远程连接设置。
内容的提问来源于stack exchange,提问作者user3579222
相关产品推荐
相关产品推荐

