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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:12:29