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

Synapse笔记本脚本单独运行正常但超时,管道中排队卡住求助

解决Synapse Notebook脚本执行后Spark超时及Pipeline任务排队问题

一、修复脚本执行完成但Spark应用超时(LIVY_JOB_TIMED_OUT)

  • 检查资源泄漏与未关闭的会话
    确认脚本中是否存在未手动终止的Spark会话或未释放的资源:
    • 如果手动创建了SparkSession,在脚本最后添加spark.stop()强制终止会话(Synapse自动管理的会话通常无需此操作,但自定义会话必须手动停止)。
    • 检查是否有未关闭的文件句柄、数据库连接或第三方资源,比如用pandas读写文件后需确保调用close(),或使用with语句自动释放资源。
  • 排查后台线程/异步任务
    若脚本中使用了线程池、concurrent.futures或asyncio,需确保所有后台任务已完成并终止:
    • 例如使用ThreadPoolExecutor时,需调用executor.shutdown(wait=True)等待所有线程执行完毕。
    • 避免在脚本中遗留未join的线程,否则主线程结束后后台线程仍会占用Spark资源,导致应用无法正常终止。
  • 调整Livy会话超时配置
    登录Synapse工作区,进入对应的Spark池设置,在高级选项中调整Livy会话超时时间(默认可能较短),延长至合理范围(比如300秒),避免脚本执行完成后因会话未及时回收触发超时。

二、解决Pipeline中Notebook活动排队卡住问题

  • 检查Spark池资源占用
    • 进入Synapse的Spark池页面,查看当前运行的Spark应用总数,若已达池的并发作业限制,需调整池的并发作业数(在Spark池的配置选项中修改),或启用自动缩放增加节点数。
    • 确认没有其他长时间运行的任务占用池资源,必要时终止闲置的Spark应用释放资源。
  • 验证Notebook活动配置
    • 确保Pipeline中Notebook活动指定的Spark池存在且有权限访问,避免因池不存在或权限不足导致任务无法调度。
    • 匹配Spark池的资源规格与脚本需求:若脚本仅处理少量文件,无需使用大节点池,选择合适的小规格池可加快调度速度。
  • 排查Pipeline依赖与触发逻辑
    • 检查Pipeline的上游任务是否已成功完成,若上游任务失败或未执行,会导致当前Notebook活动处于等待状态。
    • 避免短时间内频繁触发Pipeline,导致任务堆积在队列中,可调整触发频率或设置任务并发限制。

三、通用排查步骤

  • 查看Spark应用日志
    在Synapse的Spark应用详情页,查看驱动日志和Executor日志,定位脚本执行完成后是否有异常线程等待或资源占用的情况,例如是否有未处理的异常导致进程挂起。
  • 简化脚本测试
    暂时移除脚本中的业务逻辑,保留最基础的代码(比如仅打印语句),验证是否仍出现超时或排队问题,逐步排查是业务代码还是环境配置导致的异常。
  • 重启Spark池
    若怀疑Spark池或Livy服务异常,可重启对应的Spark池,清除缓存和无效会话后重新运行任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:52:47