java—跨同一jvm上的多个应用程序管理streamingcontext

epfja78i  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(191)

根据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));

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题