【发布时间】:2019-03-12 14:27:26
【问题描述】:
目前正在研究 Spark,我通过自定义 Spark 侦听器 API 收集了一些性能指标用于分析目的。我试图制作一个堆积条形图,显示执行器通过执行任务、洗牌或垃圾收集暂停的时间百分比,用于三种不同的机器学习算法。 这是我发现的截图:
情节出现后立即引起我注意的是利率是错误的。可以看到,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 包含什么?
谢谢
【问题讨论】:
标签: pandas apache-spark pyspark apache-spark-mllib metrics