Java “线程中的异常”;“主要”;org.apache.spark.SparkException:此JVM中只能运行一个SparkContext(请参阅spark-2243)
当我试图用cassandra运行spark应用程序时,我遇到了一个错误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
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
;我应该怎么做呢?