如何在AWS EMR(和Boto3)上显示Spark应用程序的完成百分比?

时间:2017-06-05 00:57:16

标签: python apache-spark pyspark amazon-emr

我正在AWS EMR上运行一个Spark步骤,这一步是通过Boto3添加到EMR中的,我想向用户返回一个完成任务的百分比,无论如何都要这样做吗?

我正在考虑使用Spark完成阶段的数量计算这个百分比,我知道这不会太精确,因为第4阶段可能比第5阶段花费两倍的时间,但我很好。

是否可以使用boto3访问此信息?

我检查了方法<metahere是文档),但在响应中我只是在没有其他信息的情况下运行。

2 个答案:

答案 0 :(得分:2)

免责声明:我对AWS EMR和Boto3一无所知

  

我想向用户返回完成任务的百分比,无论如何都要这样做吗?

任何方式?也许吧。只需注册一个SparkListener并拦截事件。这就是Web UI在幕后工作的方式(这是Spark应用程序的确切来源)。

使用spark.extraListeners属性注册SparkListener并对事件做任何您想做的事。

引用官方文档的Application Properties

  

spark.extraListeners 以逗号分隔的实现SparkListener的类列表;初始化SparkContext时,将创建这些类的实例并使用Spark的侦听器总线进行注册。如果一个类有一个接受SparkConf的单参数构造函数,那么将调用该构造函数;否则,将调用零参数构造函数。

您还可以考虑REST API界面:

  

除了在UI中查看指标外,它们还可以作为JSON使用。这为开发人员提供了一种为Spark创建新的可视化和监视工具的简便方法。 JSON既可用于正在运行的应用程序,也可用于历史记录服务器。端点安装在/ api / v1。例如,对于历史服务器,它们通常可以在http://:18080 / api / v1上访问,对于正在运行的应用程序,可以在http://localhost:4040/api/v1访问。

答案 1 :(得分:0)

此刻不支持,我认为不会很快。

您只需按照老式的方式关注应用程序日志。因此,可以考虑以您知道实际完成的方式格式化日志。