1

我运行 Spark Job 并尝试更快地调整它。奇怪的是总正常运行时间为 1.1 小时,但我将所有工作持续时间加起来。只需25分钟。我很好奇为什么 Spark UI 中的总正常运行时间不等于所有工作持续时间的总和?

这是 Spark UI 信息。总正常运行时间为 1.1 小时。

总运行时间

但是所有作业的总时长约为 25 分钟 所有作业的持续时间

非常感谢你

4

1 回答 1

1

Total uptime是 Spark 应用程序或驱动程序启动后的时间。Jobs durations是处理任务所花费的时间RDDs/DataFrames

驱动程序执行的所有语句都会影响总正常运行时间,但不一定会影响作业持续时间。例如:

val rdd: RDD[String] = ???
(0 to 100).foreach(println)  // contribute in total uptime not in job duration
Thread.sleep(10000)          // contribute in total uptime not in job duration
rdd.count                    // contribute in total uptime as well as in job duration

另一个例子是spark-redshift连接器的工作原理。从 redshift 读取或写入时,每个查询 (DAG) 执行都会发出COPY/UNLOAD命令以将数据写入/从 s3 写入数据。

在此操作期间,执行程序不做任何工作,并且驱动程序被阻塞,直到完成向 s3 的数据传输。此时间将增加总正常运行时间,但不会显示在Job duration. 对DataFrame(现在从 s3 内部读取文件)的进一步操作将添加到Job duration

于 2020-09-08T08:33:51.883 回答