答案 0 :(得分:1)
我仍在学习Spark UI,但我相信对于所有任务的操作,它们都是“持续时间(最小值,中位数,最大值)”。在您的情况下,我认为这意味着此操作的一项任务花费了3.09小时,而其他任务花费了将近0,并且此操作的所有任务的总和为4.34小时。
我认为这意味着数据未正确分区,因此未在各个任务之间平均分配(即倾斜分区)。如果要在“ SQL”标签中查看此操作,则可以单击顶部的作业编号,然后单击包含此WholeStageCodegen操作的阶段,然后滚动到底部的“任务”部分,然后查看“随机读取所有任务的读取大小/记录。如果其中一个异常大,则Spark无法有效地并行运行任务。在这种情况下,您可能希望“也许使用重新分区”查看数据的适当分区,或者如果使用的是RDD而不是Dataframe,请考虑使用利用Spark优化器并生成有效查询计划的Dataframe。
这些标签可能是通过以下代码生成的:https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/metric/SQLMetrics.scala