Попытка рассчитать время выполнения в Spark - PullRequest
0 голосов
/ 14 мая 2018

Если я сделаю код, подобный этому:

foreachRDD{ rdd => 
  //operation1
  val before = time.now()
  val result = rdd.map(r=> //some operation)
  val finalTime = time.now() - before

  //operation1
  val before2 = time.now()
  val result2 = result.map(r=> //some operation)
  val finalTime2 = time.now() - before2

  ....   
  //Some action
}

Я думаю, что finalTime и finalTime2 выполняются в драйвере, и они дают мне реальное время для выполнения каждой из этих операций, я прав?или эти операции где действительно выполняются?

1 Ответ

0 голосов
/ 14 мая 2018

Я думаю, что вы можете использовать функцию time, но она доступна только после 2.1.0 (Вы можете добавить вручную для более низких версий.)

val spark = SparkSession
  .builder()
  .appName("Spark test")
  .master("local[*]")
  .getOrCreate()

val df = ???
spark.time(df.show()) //some block of operation here

Вы можете увидеть здесь

/ ** * Выполняет некоторый блок кода и печатает, чтобы выводить время, затраченное на выполнение блока.Это * доступно только в Scala и используется в основном для интерактивного тестирования и отладки.* * @since 2.1.0 * /

def time[T](f: => T): T = {
    val start = System.nanoTime()
    val ret = f
    val end = System.nanoTime()
    // scalastyle:off println
    println(s"Time taken: ${(end - start) / 1000 / 1000} ms")
    // scalastyle:on println
    ret
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...