我试图在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?谢谢
答案 0 :(得分:0)
您需要使用现有的SparkContext sc
来创建StreamingContext
val ssc = new StreamingContext(sc, Seconds(30))
当您使用替代构造函数创建它时,即SparkConf
创建它时,它会在内部创建另一个SparkContext
,这就是您获得该警告的原因。