根据spark流媒体文档:
只有一个 StreamingContext
可以同时在jvm中处于活动状态。
我有一个场景,其中多个应用程序可以尝试在同一个jvm中启动流上下文。
为了优雅地处理此场景,我使用以下代码:
private static StreamingContext getStreamingContext(SparkSession spark) {
if (StreamingContext.getActive().isEmpty()) {
return new StreamingContext(spark.sparkContext(), getBatchDuration(spark));
} else {
return StreamingContext.getActive().get();
}
}
以上方法是否正确,或者我应该等待现有流式处理上下文的终止,并创建如下新内容:
private static StreamingContext getStreamingContext(SparkSession spark) {
if (StreamingContext.getActive().isDefined()){
StreamingContext.getActive().get().awaitTermination();
}
return new StreamingContext(spark.sparkContext(), getBatchDuration(spark));
}
我在创造 JavaStreamingContext
这样地:
JavaStreamingContext jsc = new JavaStreamingContext(getStreamingContext(spark));
暂无答案!
目前还没有任何答案,快来回答吧!