[spark] Only one SparkContext may be running in this JVM 에러
다음과 같은 에러가 발생한다는 것은.. 실행시 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");