EMR on EKS中PySpark任务执行完成后UI仍显示运行的异常排查
EMR on EKS添加PyDeequ后任务日志完成但UI持续运行的原因
以下是几个最可能的诱因:
- PyDeequ残留Spark会话/资源未释放:PyDeequ执行校验时会基于现有Spark会话创建内部的校验上下文,若校验完成后没有显式关闭这些衍生资源(比如未调用
spark.stop(),或是VerificationSuite的结果处理逻辑持有会话引用),Spark进程不会真正退出,EMR Containers的UI会持续认为任务在运行。 - 后台线程未终止:PyDeequ内部有负责指标计算、结果存储的后台线程,部分场景下这些线程在校验逻辑执行完毕后不会自动终止,导致整个应用进程处于挂起状态,无法触发EMR的任务完成状态上报。
- EMR与EKS的状态同步延迟:EMR Containers的UI状态依赖EKS Pod的状态上报,如果PyDeequ完成后Spark的退出信号没有及时传递给EMR控制平面,或是Pod的Terminating状态未被正确捕获,就会出现日志显示完成但UI卡运行的情况。
- 异步任务阻塞进程退出:如果你的代码中用PyDeequ生成校验结果后,有异步写入(比如异步上传到S3)或未处理的回调逻辑,这些异步任务会阻塞主进程退出,导致UI无法感知任务完成。
内容的提问来源于stack exchange,提问作者nate
相关产品推荐
相关产品推荐

