我运行 Spark Job 并尝试更快地调整它。奇怪的是总正常运行时间为 1.1 小时,但我将所有工作持续时间加起来。只需25分钟。我很好奇为什么 Spark UI 中的总正常运行时间不等于所有工作持续时间的总和?
这是 Spark UI 信息。总正常运行时间为 1.1 小时。
但是所有作业的总时长约为 25 分钟 所有作业的持续时间
非常感谢你
我运行 Spark Job 并尝试更快地调整它。奇怪的是总正常运行时间为 1.1 小时,但我将所有工作持续时间加起来。只需25分钟。我很好奇为什么 Spark UI 中的总正常运行时间不等于所有工作持续时间的总和?
这是 Spark UI 信息。总正常运行时间为 1.1 小时。
但是所有作业的总时长约为 25 分钟 所有作业的持续时间
非常感谢你
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