我正在编写Spark应用程序,我需要拦截正在运行的作业的状态.我SparkListener
为此目的实现了一个,使用以下代码:
class MyAppListener extends SparkListener {
override def onApplicationStart(ev: SparkListenerApplicationStart): Unit = {
println("AAA: Application Start")
}
override def onApplicationEnd(ev: SparkListenerApplicationEnd): Unit = {
println("AAA: Application End")
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我使用以下代码启动应用程序并查看事件:
val appListener = new MyAppListener
val conf = new SparkConf().setAppName("Listener")
val sc = new SparkContext(conf)
sc.addSparkListener(appListener)
println(sc.parallelize(1 to 10).count)
sc.stop()
Run Code Online (Sandbox Code Playgroud)
在日志中,我看到字符串"AAA:Application End",但我没有看到应用程序的开始.
组态:
Xua*_*ham 10
你正在将你的监听器添加到错误的位置,当你启动一个spark上下文时,它也会启动你的应用程序.=>在你添加你的监听器时,onApplicationStart已经被触发了.
解决方案:将您的侦听器添加到SparkConf.
sparkConf.set("spark.extraListeners","your.listener.class")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
925 次 |
最近记录: |