J'ai besoin de calculer le temps d'exécution d'un code dans scala. Le code est.
val data = sc.textFile("/home/david/Desktop/Datos Entrada/household/household90Parseado.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
val numClusters = 5
val numIterations = 10
val clusters = KMeans.train(parsedData, numClusters, numIterations)
J'ai besoin de connaître le temps d'exécution pour traiter ce code, le temps doit être en secondes. Merci beaucoup.
Basé sur la discussion ici , vous voudrez utiliser System.nanoTime
pour mesurer la différence de temps écoulé:
val t1 = System.nanoTime
/* your code */
val duration = (System.nanoTime - t1) / 1e9d
Vous pouvez utiliser un scalamètre: https://scalameter.github.io/
Mettez simplement votre bloc de code entre crochets:
val executionTime = measure {
//code goes here
}
Vous pouvez le configurer pour réchauffer le jvm afin que les mesures soient plus fiables:
val executionTime = withWarmer(new Warmer.Default) measure {
//code goes here
}
En partant de Spark2
nous pouvons utiliser spark.time(<command>)
(uniquement en scala jusqu'à présent) pour obtenir le temps mis pour exécuter action/transformation ..
Exemple:
Trouver le nombre de records in a dataframe
scala> spark.time(
sc.parallelize(Seq("foo","bar")).toDF().count() //create df and count
)
Time taken: 54 ms //total time for the execution
res76: Long = 2 //count of records
L'approche la plus élémentaire consisterait simplement à enregistrer l'heure de début et l'heure de fin et à effectuer une soustraction.
val startTimeMillis = System.currentTimeMillis()
/* your code goes here */
val endTimeMillis = System.currentTimeMillis()
val durationSeconds = (endTimeMillis - startTimeMillis) / 1000
ce serait la meilleure façon de calculer le temps pour scala code.
def time[R](block: => (String, R)): R = {
val t0 = System.currentTimeMillis()
val result = block._2
val t1 = System.currentTimeMillis()
println(block._1 + " took Elapsed time of " + (t1 - t0) + " Millis")
result
}
result = kuduMetrics.time {
("name for metric", your function call or your code)
}