executorRunTime在Spark中包含什么?

时间:2019-03-12 14:27:27

标签: pandas apache-spark pyspark apache-spark-mllib metrics

当前在Spark上工作,我通过自定义Spark侦听器API收集了一些性能指标以用于分析。我试图制作一个堆叠的条形图,以显示执行者通过三种不同的机器学习算法执行任务,改组或垃圾回收暂停的时间百分比。 这是我发现的屏幕截图:

execution, garbage-collection, serialization and shuffling rates in Spark MlLib

剧情出现后立即引起我注意的是利率是错误的。您可以看到kmeans算法的值超过了1,感知器的值超过了0.8。

这是我计算费率的方式:

execution['cpuRate'] = execution['executorCpuTime'] / execution['executorRunTime']
execution['serRate'] = execution['resultSerializationTime'] / execution['executorRunTime']
execution['gcRate'] = execution['jvmGCTime'] / execution['executorRunTime']
execution['shuffleFetchRate'] = execution['shuffleFetchWaitTime'] / execution['executorRunTime']
execution['shuffleWriteRate'] = execution['shuffleWriteTime'] / execution['executorRunTime']

execution = execution[['cpuRate', 'serRate', 'gcRate', 'shuffleFetchRate', 'shuffleWriteRate']]

execution.plot.bar(stacked=True)

我使用Pandas库,执行是包含平均指标的数据框。 当然,我的假设是executorRunTime是其他基础指标的总和,但事实证明是错误的。

那些时代的含义是什么,它们之间有什么关系?我的意思是:如果不是上面指定的所有其他指标,那么executorRunTime由什么组成?

谢谢

1 个答案:

答案 0 :(得分:0)

根据TaskMetrics.scala

  * Time the executor spends actually running the task (including fetching shuffle data).
  */
def executorRunTime: Long = _executorRunTime.sum

以毫秒为单位。