【发布时间】:2021-07-20 11:42:42
【问题描述】:
关于应用程序有 4 个主要操作(jdbc 写入),计数很少,总共需要大约 4-5 分钟才能完成。 但应用程序的总正常运行时间约为 12-13 分钟。
我看到某些作业在 ThreadPoolExecutor.java : 1149 上运行。就在此作业反映在 Spark UI 上之前,会发生不可见的长时间延迟。
我想知道这些延迟的可能原因是什么。 我的应用程序正在从表中读取 8-10 个 CSV 文件和 5-6 个视图。联接数约为 59,其中有 agg(sum) 的 groupBy 很少,并且有 3 个联合。
我无法在 DEV/UAT 环境中重现该问题,因为数据不多。 它在我获得应用程序的生产环境中。由我的经理执行。
如果有人在工作中遇到此类延误,请分享您的经验,这可能是导致这种情况的潜在原因,目前我正在围绕工会工作,即缓存相关的数据帧并调用计数,以便从中受益在即将到来的联合中缓存(尚未测试,如果联合是延迟的原因)
同样,我尝试使用缓存和计数来打破长链转换以打破长沿袭。 时间从最初的 18 分钟减少到 12 分钟,但隐形延迟的问题仍然存在。
提前致谢
【问题讨论】:
-
如果您的 spark 作业调用之间没有任何 CPU 或 IO 密集型代码。然后是 Spark Query 规划的时候了。
标签: apache-spark apache-spark-sql delay jobs uptime