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

如何通过Bitbucket Pipeline正确连接Databricks以运行测试

解决Bitbucket Pipeline中Databricks Connect连接失败的问题

针对你遇到的RuntimeError: Only remote Spark sessions using Databricks Connect are supported. Could not find connection parameters to start a Spark remote session.错误,以下是几个可靠的修复方案:

1. 抛弃交互式配置,直接用环境变量注入连接参数

databricks-connect configure的交互式输入在Bitbucket Pipeline的非TTY环境下可能无法正确生成配置文件,直接设置环境变量更可靠。修改Pipeline的script部分:

# Install Python dependencies
- pip install -r requirements.txt

# 直接设置Databricks Connect环境变量
- export DATABRICKS_HOST="$DATABRICKS_HOST"
- export DATABRICKS_TOKEN="$DATABRICKS_TOKEN"
- export DATABRICKS_CLUSTER_ID="$DATABRICKS_CLUSTER_ID"
- export DATABRICKS_ORG_ID="$DATABRICKS_ORG_ID"
- export SPARK_REMOTE="databricks://token@$DATABRICKS_HOST?clusterId=$DATABRICKS_CLUSTER_ID&orgId=$DATABRICKS_ORG_ID"

# 验证连接(可选但推荐)
- pip install databricks-connect
- databricks-connect test

# Install and run pytest
- pip install pytest
- pytest tests/

Spark会优先读取SPARK_REMOTE环境变量,跳过本地配置文件的依赖。

2. 确保Databricks Connect版本与集群严格匹配

本地正常但CI报错的常见原因是版本不兼容:

  • 查看你的Databricks集群版本(比如13.3 LTS)
  • 在Pipeline中指定安装对应版本的databricks-connect:
    pip install databricks-connect==13.3.*
    

主版本号必须完全一致,小版本可以用通配符匹配。

3. 在测试代码中显式初始化Spark会话

如果测试代码依赖自动初始化,CI环境下可能无法识别连接参数,在测试的conftest.py中添加显式初始化逻辑:

import os
from pyspark.sql import SparkSession

def pytest_sessionstart(session):
    # 从环境变量读取参数构建远程连接
    spark_remote_url = (
        f"databricks://token@{os.environ['DATABRICKS_HOST']}"
        f"?clusterId={os.environ['DATABRICKS_CLUSTER_ID']}"
        f"&orgId={os.environ['DATABRICKS_ORG_ID']}"
    )
    spark = SparkSession.builder.remote(spark_remote_url).getOrCreate()
    # 将spark会话存入pytest配置,供所有测试用例调用
    session.config.spark = spark

4. 检查配置文件的权限与路径

如果坚持用databricks-connect configure,可以手动指定配置文件路径并确保权限:

# 生成配置文件到指定路径
- echo -e "$DATABRICKS_HOST\n$DATABRICKS_TOKEN\n$DATABRICKS_CLUSTER_ID\n$DATABRICKS_ORG_ID" | databricks-connect configure --config-file /tmp/.databricks-connect
# 设置环境变量让Spark读取这个配置文件
- export DATABRICKS_CONNECT_CONFIG_FILE="/tmp/.databricks-connect"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:15:08