当我尝试使用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));
答案 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));