如何在单个Spark应用程序中拥有更多StreamingContexts?

时间:2018-05-17 11:54:41

标签: apache-spark spark-streaming

我试图在spark-shell,localhost上运行一个火花流媒体作业。遵循here的代码,这是我第一次尝试的内容:

import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._ 

val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
val ssc = new StreamingContext(conf, Seconds(30))

其中包含以下错误:

  

org.apache.spark.SparkException:只能运行一个SparkContext   这个JVM(见SPARK-2243)。要忽略此错误,请设置spark.driver.allowMultipleContexts = true。

所以我不得不尝试这个:

import org.apache.spark._
import org.apache.spark.streaming._
import org.apache.spark.streaming.StreamingContext._ 

val conf = new SparkConf().setMaster("local[2]").setAppName 
("NetworkWordCount").set("spark.driver.allowMultipleContexts", "true")
val ssc = new StreamingContext(conf, Seconds(30))

这会运行,但会出现以下警告:

  

2018-05-17 17:01:14 WARN SparkContext:87 - 在同一个JVM中检测到多个运行的SparkContexts!

所以我想知道是否有另一种声明StreamingContext对象不需要allowMulipleContexts == True的方法,因为它使用多个上下文显示为discouraged?谢谢

1 个答案:

答案 0 :(得分:0)

您需要使用现有的SparkContext sc来创建StreamingContext

val ssc = new StreamingContext(sc, Seconds(30))

当您使用替代构造函数创建它时,即SparkConf创建它时,它会在内部创建另一个SparkContext,这就是您获得该警告的原因。