我有一个简单的Spark任务,如下所示:
JavaRDD<Solution> solutions = rdd.map(new Solve());
// Select best solution by some criteria
解决例程需要一些时间。对于演示应用程序,我需要在调用rdd.map
之前终止每个解决方案的一些属性 。
我尝试过使用累加器和SparkListener
,覆盖了onTaskEnd
方法,但似乎只在映射结束时调用,而不是每个线程调用,例如。
sparkContext.sc().addSparkListener(new SparkListener() {
public void onTaskEnd(SparkListenerTaskEnd taskEnd) {
// do something with taskEnd.taskInfo().accumulables()
}
});
如何为每个地图功能结束获取异步消息?
Spark以本地或独立群集模式运行。
答案可以是Java或Scala,两者都可以。