다음과 같은 에러가 발생한다는 것은.. 실행시 SparkContext가 두 개 이상의 인스턴스가 있다는 의미이다. 



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:





spark-shell을 실행할 때, 이미 SparkContext가 이미 생성되어 있다. 


scala> sc

res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@26a004ed


이 때 새로운 SparkContext를 생성할 때 해당 예외가 발생한다. 



scala> val conf = new SparkConf().setAppName("aaa")

conf: org.apache.spark.SparkConf = org.apache.spark.SparkConf@64d42d3d


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)



StreamingContext를 기존의 sc로 바인딩하면 에러가 발생하지 않는다.


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

ssc: org.apache.spark.streaming.StreamingContext = org.apache.spark.streaming.StreamingContext@55ff64fd




만약 두 개의 SparkContext를 유지하려면, SparkConf에 다음 설정을 추가한다.


conf.set("spark.driver.allowMultipleContexts","true");



Posted by '김용환'
,