2015-06-04 2 views
1

Я только начал использовать Spark, и мои взаимодействия с ним вращаются вокруг spark-shell на данный момент. Я хотел бы проверить, как долго выполняются различные команды, но не смогли найти, как получить время или запустить тест. В идеале я хотел бы сделать что-то супер-простой, таких как:Как измерить производительность в консоли Spark?

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

Edit: Понял это -

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 
} 

You может передать функцию в качестве аргумента функции времени, и она вычислит результат функции, предоставляя вам время, которое выполняет выполняемая функция.

Давайте рассмотрим функцию foobar, которые принимают данные в качестве аргумента, а затем сделать следующее:

val test = time(foobar(data)) 

test будет представлен результат foobar и вы получите время, необходимое, а также.

+1

System.nanoTime дает время в наносекундах. Ваше преобразование дает миллихеры :) Замените 1e6 * 60 * 60 с 1e9, чтобы получить результат за считанные секунды. – HansHarhoff

+0

Я никогда не вспоминаю, когда писал это. Спасибо ! – eliasah

Смежные вопросы