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

时间:2016-09-04 21:08:39

标签: scala apache-spark

如何在Spark阶段找到每个步骤的持续时间?

enter image description here

我想知道哪一步确实是我工作的瓶颈。

2 个答案:

答案 0 :(得分:3)

您可以参考类 StreamingJobProgressListener 这是Spark的StreamingListener的默认实现,用于捕获作业进度指标。

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

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

您可以浏览 progressListener.onStageSubmitted,progressListener.onStageCompleted,progressListener.onTaskStart progressListener.onTaskEnd 函数,以获取所需的指标。

答案 1 :(得分:1)

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

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

这篇文章可以阐明如何使用Spark UI来调试应用程序。 Understanding your Apache Spark application through visualization