spark中如何测量每个算子的运行时间

Posted

技术标签:

【中文标题】spark中如何测量每个算子的运行时间【英文标题】:How to measure the runtime of each operator in spark 【发布时间】:2018-03-12 10:14:53 【问题描述】:

有没有办法测量 Spark 中每个算子的运行时间

例如,我有以下字数统计代码:

val counts = textFile.flatMap(line => line.split(" "))
             .map(word => (word, 1))
             .reduceByKey(_ + _)

如何分别测量每个 map/flatMap/reduceByKey 算子的运行时间?

【问题讨论】:

【参考方案1】:

你可以做一些奇怪的事情,比如为每个转换创建 accumulators 并在那里积累时间。 Here 是时间测量代码。 只需使用它来测量每个操作的时间并为累加器增加价值。

但这真的很奇怪

首先 - 所有转换都转换为任务,然后发送给工作人员执行。甚至可能多个转换都在同一个任务中。

所以我认为你想要的是使用Spark Web UI。

【讨论】:

谢谢,我觉得累加器可以用,我试试。我尝试了 Spark Web UI,但它没有提供所需的信息,它显示了整个任务的运行时,如你所说,它可能由多个运算符组成。

以上是关于spark中如何测量每个算子的运行时间的主要内容,如果未能解决你的问题,请参考以下文章

大数据:Spark 算子排序算子sortByKey来看大数据平台下如何做排序

spark的做算子统计的Java代码(在Linux系统集群式运行)

大数据:Spark Core用LogQuery的例子来说明Executor是如何运算RDD的算子

spark

spark过滤算子+StringIndexer算子出发的一个逻辑bug

如何在idea里面直接运行spark streaming程序