通过查看 Spark UI 时间线,我发现我的 Spark 应用程序特定阶段的最后一个任务总是花费太多时间。看来任务不可能永远完成,我什至比正常任务等待的时间多了六倍。
我想获得有关lask任务的更多信息,但我不知道如何调试这个特定任务,有人可以给我一些建议吗?
感谢您的帮助!
The data has been partitioned well, so the lask task don't have too much data.
最佳答案
检查生成的数据帧的解释计划以了解正在发生的操作。有没有洗牌的情况?有时,当对数据帧执行操作(例如联接)时,可能会导致中间数据帧被映射到较少数量的分区,这可能会导致性能下降,因为数据没有尽可能分布。
检查是否存在大量随机播放和重复调用此类数据帧,并尝试缓存随机播放后立即出现的数据帧。
查看Spark UI(驱动地址默认为4040),看看缓存的dataframes的数据量是多少,有哪些进程,是否有其他开销,例如gc或者是否是纯粹的处理时间。
希望有帮助。
关于apache-spark - 如何获取spark任务详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659865/