스파크 쉘에서 streaming을 테스트하기 위해 코드를 그대로 따라하면 Only one SparkContext may be running in this JVM 이라는 Exception이 발생한다. 



scala> import org.apache.spark._

import org.apache.spark._


scala> import org.apache.spark.streaming._

import org.apache.spark.streaming._


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

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


scala> val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")

conf: org.apache.spark.SparkConf = org.apache.spark.SparkConf@38394e76


scala> val ssc = new StreamingContext(conf, Seconds(1))

org.apache.spark.SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243). To ignore this error, set spark.driver.allowMultipleContexts = true. The currently running SparkContext was created at:

org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860)

org.apache.spark.repl.Main$.createSparkSession(Main.scala:95)




Exception이 발생하는 이유는 데몬이 떠 있어서 그런 것이 아나라 스파크 쉘에 spark context(sc)가 있기 때문이다. 아래와 같이 코딩하면 에러가 발생하지 않고 spark streaming 객체를 얻을 수 있다. 



 import org.apache.spark._

import org.apache.spark.streaming._

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

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


Posted by '김용환'
,