Java “线程中的异常”;“主要”;org.apache.spark.SparkException:此JVM中只能运行一个SparkContext(请参阅spark-2243)

Java “线程中的异常”;“主要”;org.apache.spark.SparkException:此JVM中只能运行一个SparkContext(请参阅spark-2243),java,cassandra,apache-spark,spark-streaming,Java,Cassandra,Apache Spark,Spark Streaming,当我试图用cassandra运行spark应用程序时,我遇到了一个错误 Exception in thread "main" org.apache.spark.SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243). 我使用的是spark版本1.2.0,很明显,我在应用程序中只使用了一个spark上下文。但每当我尝试添加以下代码用于流式传输时,我都会遇到这个错误 JavaStreami

当我试图用cassandra运行spark应用程序时,我遇到了一个错误

Exception in thread "main" org.apache.spark.SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243). 
我使用的是spark版本1.2.0,很明显,我在应用程序中只使用了一个spark上下文。但每当我尝试添加以下代码用于流式传输时,我都会遇到这个错误

JavaStreamingContext activitySummaryScheduler = new JavaStreamingContext(
            sparkConf, new Duration(1000));

一次只能有一个SparkContext,因为StreamingContext中有一个SparkContext,所以不能在同一代码中有单独的流和Spark上下文。你可以做的是从你的SparkContext构建一个StreamingContext,这样如果你真的需要的话,你就可以访问这两个

使用此构造函数
JavaStreamingContext(sparkContext:JavaSparkContext,batchDuration:Duration)

看看这里的第二个代码片段

这就是您的代码应该是什么样子

import org.apache.spark.streaming.api.java.*;

JavaSparkContext existingSparkContext = ...   //existing JavaSparkContext
JavaStreamingContext activitySummaryScheduler = new JavaStreamingContext(existingSparkContext, Durations.seconds(1000));

一种方法可以是:

    SparkConf sparkConf = new SparkConf().setAppName("Example Spark App").setMaster("local[*]");
    JavaSparkContext jssc = new JavaSparkContext(sparkConf);
    JavaStreamingContext jsc = new JavaStreamingContext(jssc, new Duration(1));

这还不是全部代码!您之前启动过sparkcontext吗?是的,但是我如何在提交新作业时从语法上检索现有上下文?getOrCreate函数将允许您检查JVM中是否有运行的上下文不起作用,请看,我不知道您在尝试做什么我只是想创建一个
JavaStreamingContext
;我应该怎么做呢?