MyJavaSparkListener 类
package com.streamanalytix.spark.core.pipeline;
import org.apache.commons.logging.Log;
import org.apache.spark.JavaSparkListener;
import org.apache.spark.scheduler.SparkListenerApplicationEnd;
import org.apache.spark.scheduler.SparkListenerApplicationStart;
import org.apache.spark.scheduler.SparkListenerBlockManagerAdded;
import org.apache.spark.scheduler.SparkListenerBlockManagerRemoved;
public class MyJavaSparkListener extends JavaSparkListener {
/** The Constant LOGGER. */
private static final Log LOGGER = LogUtil.getLogger(MyJavaSparkListener.class);
public MyJavaSparkListener() {
super();
LOGGER.info("---------------------------------------------- Creating new SaxJavaSparkListener");
}
@Override
public void onApplicationStart(SparkListenerApplicationStart arg0) {
LOGGER.info("---------------------------------------------- Spark pipeline is up and running...");
}
@Override
public void onApplicationEnd(SparkListenerApplicationEnd arg0) {
LOGGER.info("---------------------------------------------- Spark pipeline going to shutdown...");
}
@Override
public void onBlockManagerAdded(SparkListenerBlockManagerAdded blockManagerAdded) {
LOGGER.info("---------------------------------------------- onBlockManagerAdded");
}
@Override
public void onBlockManagerRemoved(SparkListenerBlockManagerRemoved blockManagerRemoved) {
LOGGER.info("---------------------------------------------- onBlockManagerRemoved");
}
}
我正在使用以下行注册此侦听器
context.sparkContext().sc().addSparkListener(new MyJavaSparkListener());
我在客户端模式下运行Spark应用程序但我没有看到为onApplicationStart
或onApplicationEnd
打印的任何日志。但是,会调用onBlockManagerAdded
并打印日志。
我不知道onApplicationStart
的用途是什么,或者如何使用它,因为文档太有限了。
感谢。
答案 0 :(得分:4)
问题是在注册监听器之前已经发送了spinlock_t
。为避免这种情况,您可以使用配置SparkListenerApplicationStart
。然后Spark会在任何事件发生前注册您的监听器。以下是有关此配置的说明(http://spark.apache.org/docs/latest/configuration.html#application-properties):
以逗号分隔的实现SparkListener的类列表;在初始化SparkContext时,将创建这些类的实例并使用Spark的侦听器总线进行注册。如果一个类有一个接受SparkConf的单参数构造函数,那么将调用该构造函数;否则,将调用零参数构造函数。如果找不到有效的构造函数,SparkContext创建将失败并出现异常。