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

求助:ADF中Synapse Notebook活动无法调用其他Notebook的解决方案

解决ADF中Synapse Notebook活动调用子Notebook失败的问题

以下是针对该问题的具体解决方案:

  • 调整参数传递格式
    ADF执行上下文和直接运行Notebook的环境存在差异,原代码中嵌套的{"notebookparams": ...}格式可能无法被正确解析。尝试直接传递参数字典(如果Job_configInfo_dicencoded是解码后的字典):
mssparkutils.notebook.run(notebook_name, 90, Job_configInfo_dicencoded)

如果Job_configInfo_dicencoded是编码后的字符串,需先在父Notebook中解码为字典,再传递给子Notebook,子Notebook内做对应解析处理。

  • 核验权限配置

    1. 确认ADF使用的托管标识/服务主体,在Synapse Studio中拥有目标Notebook的运行权限(至少分配「Notebook运行者」角色)。
    2. 检查子Notebook依赖的所有资源(如ADLS存储、SQL池等),是否对该ADF标识开放了必要的访问权限,避免因权限不足导致调用中断。
  • 优化超时设置
    ADF中Notebook活动的默认超时逻辑和直接运行不同,可适当调大mssparkutils.notebook.run的超时参数,比如从90秒改为300秒:

mssparkutils.notebook.run(notebook_name, 300, {"notebookparams": Job_configInfo_dicencoded})

同时确保ADF的Synapse Notebook活动本身的超时设置,大于子Notebook的预期运行时长。

  • 添加日志定位问题
    在父Notebook的调用逻辑中增加日志输出,便于排查参数传递和执行异常:
print(f"待调用Notebook路径: {notebook_name},传递参数: {Job_configInfo_dicencoded}")
try:
    run_result = mssparkutils.notebook.run(notebook_name, 90, {"notebookparams": Job_configInfo_dicencoded})
    print(f"子Notebook调用成功,返回结果: {run_result}")
except Exception as error:
    print(f"子Notebook调用失败,错误详情: {str(error)}")

之后查看ADF的活动运行日志,以及Synapse工作区的作业日志,定位具体错误点。

  • 改用ADF参数传递机制
    如果mssparkutils.notebook.run在ADF环境存在兼容性问题,可以通过ADF直接给父Notebook传参,再由父Notebook转发:
    1. 在ADF的Synapse Notebook活动中,配置自定义参数(比如encoded_config),值设为你的Job_configInfo_dicencoded内容。
    2. 父Notebook中读取该参数:
Job_configInfo_dicencoded = spark.conf.get("spark.notebook.param.encoded_config")
  1. 再调用子Notebook时传递解析后的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:46:20