如何在 Spark 控制台中对性能进行基准测试?

Posted

技术标签:

【中文标题】如何在 Spark 控制台中对性能进行基准测试?【英文标题】:How can I benchmark performance in Spark console? 【发布时间】:2015-06-04 14:54:19 【问题描述】:

我刚刚开始使用 Spark,目前我与它的交互围绕着spark-shell。我想基准测试各种命令需要多长时间,但找不到如何获取时间或运行基准测试。理想情况下,我想做一些超级简单的事情,例如:

val t = [current_time]
data.map(etc).distinct().reduceByKey(_ + _)
println([current time] - t)

编辑:想通了--

import org.joda.time._
val t_start = DateTime.now()
[[do stuff]]
val t_end = DateTime.now()
new Period(t_start, t_end).toStandardSeconds()

【问题讨论】:

【参考方案1】:

我建议您执行以下操作:

def time[A](f: => A) = 
  val s = System.nanoTime
  val ret = f
  println("time: " + (System.nanoTime - s) / 1e9 + " seconds")
  ret

您可以将函数作为参数传递给时间函数,它会计算函数的结果,为您提供要执行的函数所花费的时间。

让我们考虑一个以数据为参数的函数foobar,然后执行以下操作:

val test = time(foobar(data))

test 将包含foobar 的结果,您也将获得所需的时间。

【讨论】:

System.nanoTime 以纳秒为单位给出时间。您的转换产生毫秒 :) 将 1e6*60*60 替换为 1e9 以在几秒钟内获得结果。 我不记得我是什么时候写的。谢谢!

以上是关于如何在 Spark 控制台中对性能进行基准测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Clojure 中对函数进行基准测试?

如何在处理程序中对龙卷风处理程序进行基准测试?

在Go中对gRPC+ProtoBuf与Http+Json进行基准测试

如何测量网络性能(如何对网络协议进行基准测试)

在不使用操作的情况下对 Spark 进行基准测试

在 C# 中对小代码示例进行基准测试,这个实现可以改进吗?