【发布时间】:2018-02-16 07:31:51
【问题描述】:
我根据此处https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-ExecutionListenerManager.html 和此处https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/exercises/spark-exercise-custom-scheduler-listener.html 的信息创建了一个虚拟的自定义QueryExecutionListener(如下所示)。
自定义监听器只有一些打印语句。监听器是通过配置属性 spark.sql.queryExecutionListeners 添加的。但是,我在 spark submit 命令的控制台中看不到任何日志记录语句。 spark提交也没有错误。 我可以看到使用“spark.sqlContext.getAllConfs”设置的属性
看起来 onSuccess 和 onFailure 方法根本没有被调用。
有没有人成功创建了自定义查询执行侦听器并使用 conf 属性“注册”了它?
//自定义监听器的代码如下:
class LineageListener extends QueryExecutionListener with Logging {
override def onSuccess(funcName: String, qe: QueryExecution, durationNs: Long): Unit = {
log.info("The function ${funcName} succeeded")
val sparkContext = qe.sparkSession.sparkContext
log info("App name: ${sparkContext.appName} and id is ${sparkContext.applicationId}") }
override def onFailure(funcName: String, qe: QueryExecution, durationNs: Long): Unit = {
log.info("The function ${funcName} succeeded")
val sparkContext = qe.sparkSession.sparkContext
log info("App name: ${sparkContext.appName} and id is ${sparkContext.applicationId}") }
注意:我的 spark 版本是 2.2.1
【问题讨论】: