Scala 查找Spark阶段每个步骤的执行时间

Scala 查找Spark阶段每个步骤的执行时间,scala,apache-spark,Scala,Apache Spark,如何找到火花阶段中每个步骤的持续时间 我想弄清楚哪一步是我工作的瓶颈。我不认为您可以使用Spark UI获取有关阶段(如map或flatMap)中特定转换的许多性能指标,因为它是Spark中管道操作优化的一部分 但是,您可以在这些转换之间插入collect()操作和计时器来模拟它 下面是一篇文章,可以让我们了解如何使用SparkUI调试应用程序。 您可以参考StreamingJobProgressListener类,该类是用于捕获作业进度度量的by Spark的默认实现 可以按如下方式获取此侦

如何找到火花阶段中每个步骤的持续时间


我想弄清楚哪一步是我工作的瓶颈。

我不认为您可以使用Spark UI获取有关阶段(如map或flatMap)中特定转换的许多性能指标,因为它是Spark中管道操作优化的一部分

但是,您可以在这些转换之间插入collect()操作和计时器来模拟它

下面是一篇文章,可以让我们了解如何使用SparkUI调试应用程序。

您可以参考StreamingJobProgressListener类,该类是用于捕获作业进度度量的by Spark的默认实现

可以按如下方式获取此侦听器:

JavaStreamingContext jssc = new JavaStreamingContext(sparkconf, Durations.seconds(60));
StreamingJobProgressListener progressListener =  jssc.ssc().progressListener();

您可以探索progressListener.onStageSubmitted、progressListener.onStageCompleted、progressListener.onTaskStartprogressListener.onTaskEnd函数来获取所需的度量值。

scala版本中似乎没有其他选择。监听器是私有的