2014-09-09 3 views
0

Я относительно новичок в искры, и я хотел бы знать, есть ли все-таки знать общее время, затраченное на преобразование RDD. В настоящее время мой журнал показывает только память, потребляемую этим конкретным RDD, и не показывает время, затраченное на его преобразование.Время, затраченное на создание RDD

Например, когда я даю команду, Вэл Text = sc.textFile ("README.md")

я получаю следующее в моем журнале, 14/09/09 12:15:38 INFO MemoryStore: ensureFreeSpace(32856) called with curMem=0, maxMem=311387750 14/09/09 12:15:38 INFO MemoryStore: Block broadcast_0 stored as values to memory (estimated size 32.1 KB, free 296.9 MB) Text: org.apache.spark.rdd.RDD[String] = MappedRDD[1] at textFile at :12

Есть ли способ, чтобы получить время, затраченное на это?

Заранее спасибо.

+0

Если вы не понимаете разницу между преобразованием и действием, то перед чтением кода вы должны прочитать некоторую документацию. – samthebest

ответ

2

Когда вы создаете RDD, вы просто объявляете объект, время будет миллисекундами. Аналогично для transformations, как карта, фильтр и т. Д. На самом деле никакие задачи не выполняются до тех пор, пока вы не выполните команду action, например, подсчет, прием, сбор и т. Д.

При вызове действия журнал будет включать данные синхронизации.

scala> sc.textFile("filename").count 
... 
14/09/09 12:38:43 INFO scheduler.DAGScheduler: Stage 0 (count at <console>:13) finished in 0.984 s 
14/09/09 12:38:43 INFO spark.SparkContext: Job finished: count at <console>:13, took 1.070632705 s 
res1: Long = 380868 
+0

Благодарим вас за ответ. Если у вас огромный набор данных, и вы собираетесь его фильтровать, не займет некоторое время? – aps

+1

Да, но фильтр - это трансформация и лениво оценивается. Это займет время, но не в настоящий момент вы вызываете фильтр. –

+1

Возможно, это хороший способ подумать, что вы создаете фильтр, а не называете его. Вы вызываете действия (и запускаете задания, обрабатываете все их родительские RDD), вы создаете преобразования. – DPM