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

如何解决SQLDatabase.from_databricks在Databricks工作流作业中访问仓库失败问题

解决LangChain SQLDatabase.from_databricks在Databricks工作流中报错的问题

问题根源

作业环境中的DatabricksReplContext对象不包含browserHostName属性——这个属性仅存在于交互式笔记本的上下文里,导致LangChain的方法尝试自动读取上下文信息时失败。

解决方案

1. 显式传入所有必要参数

直接给SQLDatabase.from_databricks传入完整的连接参数,完全绕过上下文自动获取逻辑:

from langchain.sql_database import SQLDatabase
import os

# 从环境变量读取敏感信息,避免硬编码
db_host = os.getenv("DATABRICKS_HOST")
db_token = os.getenv("DATABRICKS_TOKEN")

db = SQLDatabase.from_databricks(
    host=db_host,
    api_token=db_token,
    catalog="你的目录名",
    schema="你的模式名",
    warehouse_id="你的SQL仓库ID"  # 或者用cluster_id指定集群
)

Databricks作业环境默认会注入DATABRICKS_HOST和DATABRICKS_TOKEN环境变量,无需手动配置。

2. 临时适配上下文(不推荐长期使用)

如果方法内部仍强制依赖上下文属性,可以手动构造包含browserHostName的上下文对象:

import sys
from databricks.sdk.core import DatabricksContext

# 构造上下文并添加缺失的属性
custom_context = DatabricksContext()
custom_context.browserHostName = "https://你的工作区URL"

# 替换LangChain依赖的上下文
sys.modules['databricks.repl.context'].context = custom_context

# 再调用from_databricks方法
db = SQLDatabase.from_databricks(
    catalog="你的目录名",
    schema="你的模式名",
    warehouse_id="你的SQL仓库ID"
)

这个方法属于临时hack,后续LangChain版本更新后可能会失效,优先使用第一种方案。

3. 升级LangChain到最新版本

该问题可能是旧版本的适配bug,升级到最新版的LangChain及Databricks相关插件:

%pip install --upgrade langchain langchain-databricks

如果是在作业中执行,需要将该命令放在作业的初始化步骤或第一个执行单元格中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:13:27