Azure Synapse Notebook执行成功但Spark视图显示失败问题排查
问题原因分析
- Spark作业清理阶段异常:Notebook与流水线实际执行成功,但Spark应用视图显示失败,核心原因是作业完成后,Synapse通过Livy API终止对应作业的清理流程出现异常。可能是Livy与Spark集群通信延迟、Livy资源不足,或是作业相关进程/资源已被提前释放,导致清理指令无法正常执行。
- Livy依赖缺失:Livy日志中
netty-all-4.1.17.Final.jar不存在的警告,说明Livy启动时找不到指定版本的Netty依赖包,这会导致清理阶段依赖加载失败,进而无法正常终止Livy作业,是触发EXCEPTION_DURING_SPARK_JOB_CLEANUP的直接诱因之一。 - Hadoop本地库警告(次要):
NativeCodeLoader的警告是Hadoop本地库与当前平台不兼容,系统自动使用Java替代类,该警告不影响作业核心功能和清理流程,无需重点关注。
解决方法
修复Livy依赖缺失问题
- 若使用Synapse托管Spark池,直接重启Spark池,让系统重新加载默认依赖资源,大概率能修复缺失的jar包问题;
- 若配置了自定义Livy参数,检查
livy.rsc.jars配置项,确保路径指向存在的netty-alljar包,且版本与Livy、Spark兼容; - 必要时手动上传对应版本的
netty-alljar包到Synapse的依赖库,在Notebook中指定加载该依赖。
优化作业清理流程
- 在Notebook的Spark配置中添加
spark.livy.cleanup.timeout=30s(可根据实际情况调整时长),延长清理阶段的超时时间,避免因通信延迟导致清理失败; - 调整Livy服务的JVM内存参数,在Spark池的高级配置中修改
livy.server.jvmopts,例如设置为-Xmx4g,提升Livy的资源承载能力; - 在Notebook代码末尾添加短暂延迟,比如Python中执行
time.sleep(5),确保作业资源完全稳定后再进入清理阶段。
- 在Notebook的Spark配置中添加
忽略Hadoop本地库警告
该警告不影响作业执行和流水线运行,Synapse托管池由微软维护,无需手动干预;若使用自托管集群,可确保Hadoop本地库与操作系统平台匹配,但非必要操作。
内容的提问来源于stack exchange,提问作者JTD2021
相关产品推荐
相关产品推荐

