可能有一个明显的答案,但经过大量的谷歌搜索后我找不到任何答案。
在一个典型的程序中,我通常会添加日志消息来计算代码的不同部分,并找出瓶颈所在的位置。然而,使用Spark / PySpark,转换被懒惰地评估,这意味着大多数代码在几乎恒定的时间内执行(至少不是数据集大小的函数),直到最后调用一个动作。
那么如何通过在必要和可能的情况下采取不同的方式来实现单个转换的计时并且可能使代码的某些部分更有效?
答案 0 :(得分:1)
您可以使用Spark UI查看作业的执行计划以及每个阶段的时间。然后,您可以使用该统计信息优化您的操作。以下是使用Spark UI监控Spark应用程序的非常好的演示https://youtu.be/mVP9sZ6K__Y(Spark Sumiit Europe 2016,Jacek Laskowski)