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

Databricks中Notebook间共享变量/函数:JDBC配置访问异常解决

解决Databricks Notebook间配置变量共享问题

你遇到的问题根源是:dbutils.notebook.run()会独立执行目标Notebook,目标里的变量不会自动传递到当前Notebook的执行上下文,所以直接访问会提示未声明。下面是两种可行的解决方法:

方法一:让Configs Notebook返回配置数据(推荐,适合独立执行场景)

在Configs Notebook中,将配置打包成JSON字符串通过dbutils.notebook.exit()返回:

import json

# 定义你的SQL连接配置
jdbcUrl = "jdbc:sqlserver://your-server:1433;databaseName=your-db"
connectionProperties = {
    "user": "your-username",
    "password": "your-password",
    "driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

# 打包为JSON并返回
config_payload = json.dumps({
    "jdbcUrl": jdbcUrl,
    "connectionProperties": connectionProperties
})
dbutils.notebook.exit(config_payload)

在当前Notebook中,调用Configs Notebook并解析返回的配置:

import json

# 调用配置Notebook,获取返回的JSON字符串
config_str = dbutils.notebook.run("/Configs", 120)
# 解析为字典
configs = json.loads(config_str)

# 提取配置变量
jdbcUrl = configs["jdbcUrl"]
connectionProperties = configs["connectionProperties"]

# 正常执行JDBC读取
df = spark.read.jdbc(url=jdbcUrl, table="target-table", properties=connectionProperties)

方法二:用%run直接加载配置到当前上下文(适合单纯共享变量场景)

如果Configs Notebook仅用于定义配置、没有额外的执行逻辑,可以用%run命令将目标Notebook的代码直接插入当前Notebook执行,变量会直接在当前上下文可用:

# 运行Configs Notebook,将其中的变量加载到当前会话
%run "/Configs"

# 直接使用Configs中定义的变量
df = spark.read.jdbc(url=jdbcUrl, table="target-table", properties=connectionProperties)

注意:%run会执行目标Notebook中的所有代码,若目标里有数据处理、写入等逻辑,也会一并执行,需根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:13:29