2015-06-04 22 views
1

我剛開始使用Spark,現在我與它的交互主要圍繞着spark-shell。我想基準測試各種命令需要多長時間,但無法找到如何獲得時間或運行基準。理想的情況是我希望做一些超級簡單,如:我如何在Spark控制檯中測試性能?

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

請不要忘記接受答案關閉它! – eliasah

回答

2

我建議你做到以下幾點:

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的結果,你會得到所需的時間也是如此。

+1

System.nanoTime以納秒爲單位給出時間。您的轉換產生毫秒:) 用1e9替換1e6 * 60 * 60以在幾秒鐘內得出結果。 – HansHarhoff

+0

我不記得我寫這篇文章的時候。謝謝 ! – eliasah

相關問題