我刚刚开始使用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()
答案 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
的结果,您也将获得所需的时间。