线程" main"中的例外情况org.apache.spark.SparkException:此JVM中只能运行一个SparkContext(请参阅SPARK-2243)

时间:2015-04-17 12:42:36

标签: 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上下文。但每当我尝试为流媒体目的添加以下代码时,我都会收到此错误。

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

3 个答案:

答案 0 :(得分:4)

一次只能有一个SparkContext,因为StreamingContext中有一个SparkContext,所以在同一个代码中不能有单独的Streaming和Spark Context。你可以做的是从你的SparkContext构建一个StreamingContext,这样你就可以访问它们了。

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

答案 1 :(得分:1)

在这里查看第二个代码段 enter link description here

这就是你的代码应该是这样的

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

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

答案 2 :(得分:1)

一种方法可能如下:

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