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

时间:2015-06-04 14:54:19

标签: scala apache-spark

我刚刚开始使用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 个答案:

答案 0 :(得分:3)

我建议你做以下事情:

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的结果,您也将获得所需的时间。