方法在Spark中执行所需的时间

时间:2018-09-27 13:03:20

标签: apache-spark

我正在尝试查找通过以下方式执行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

我有以下两个问题:

  1. 这个正确的方法调用近似方法是吗?
  2. si.taskMetrics.executorRunTime的实际时间单位是什么?

0 个答案:

没有答案