我正在尝试查找通过以下方式执行api调用的方法的执行时间:
val spark = SparkSession
.builder()
.appName(s"${this.getClass.getSimpleName}")
.config("spark.sql.shuffle.partitions", "9")
.master("local[*]")
.getOrCreate()
val jsc = new JavaSparkContext(spark.sparkContext)
val seq2 = List((500,0),(500,500),(500,1000),(500,1500))
val urls = spark.sparkContext.parallelize(seq2).toDF()
val myListener = new org.apache.spark.ui.jobs.JobProgressListener(jsc.getConf)
spark.sparkContext.addSparkListener(myListener)
val actual_data = (urls.map(x => (Holder.ds(x.getInt(0).toString,x.getInt(1).toString))).toJavaRDD.persist(StorageLevel.MEMORY_AND_DISK))
myListener.completedStages.foreach(si => (
println("runTime: " + si.taskMetrics.executorRunTime +
", cpuTime: " + si.taskMetrics.peakExecutionMemory)))
据我了解,si.taskMetrics.executorRunTime
将提供执行者所花费的时间,该时间大约是执行Holder.ds
中的代码所花费的时间。
最后一行提供的输出如下:
runTime: 226174, cpuTime: 0
runTime: 982, cpuTime: 0
runTime: 4772, cpuTime: 0
我有以下两个问题:
si.taskMetrics.executorRunTime
的实际时间单位是什么?