我有一些pyspark代码,其中包含大量的联接和聚合。我已经启用了spark ui,我一直在深入研究事件时间安排、工作阶段和dag可视化。我可以找到昂贵部件的任务id和执行器id。有人知道如何将spark-ui输出中昂贵的部分(任务id、执行器id(与pyspark代码的部分联系起来吗?就像我从输出中可以看出,昂贵的部分是由我所有联接的大量shuffle操作引起的,但识别哪个联接是罪魁祸首会非常方便。
最好的方法是在代码的各个部分开始对数据帧应用操作。选择一个位置,将其写入文件,读回,然后继续。这将使您能够识别您的瓶颈。正如您可以在UI中观察到的执行的一小部分。