多个spark上下文错误

yxyvkwin  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(402)

我有下面的Spark代码:

import org.apache.hadoop.hbase.client._
    import org.apache.hadoop.hbase.{ HBaseConfiguration, HTableDescriptor }
    import org.apache.hadoop.hbase.mapreduce.TableInputFormat
    import org.apache.hadoop.hbase.io.ImmutableBytesWritable
    import org.apache.hadoop.hbase.util.Bytes

    import kafka.serializer.StringDecoder

    import org.apache.spark._
    import org.apache.spark.SparkContext._
    import org.apache.spark.streaming._
    import org.apache.spark.streaming.kafka._

object Hbase {
    def main(args: Array[String]) {
          val sparkConf = new SparkConf().setAppName("Spark-Hbase").setMaster("local[2]")
          val sc = new SparkContext(sparkConf)

          ...

          val ssc = new StreamingContext(sparkConf, Seconds(3))
          val kafkaBrokers = Map("metadata.broker.list" -> "localhost:9092")
          val topics = List("test").toSet
          val lines = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaBrokers, topics)
    }
}

现在我得到的错误是: Only one SparkContext may be running in this JVM (see SPARK-2243). To ignore this error, set spark.driver.allowMultipleContexts = true. 我上面的代码有什么问题吗?我看不到我在哪里创造的背景再次。。。

t5zmwmid

t5zmwmid1#

这是你正在创建的两个sparkcontext。这是不允许的。

val sc = new SparkContext(sparkConf)
val ssc = new StreamingContext(sparkConf, Seconds(3))

您应该从原始上下文创建流上下文。

val ssc = new StreamingContext(sc, Seconds(3))
y3bcpkx1

y3bcpkx12#

您正在同一个jvm中初始化两个spark上下文,即sparkcontext和streamingcontext。这就是为什么你会得到这个例外。您可以在配置中设置spark.driver.allowmultiplecontexts=true。不过,不鼓励使用多个spark上下文。你会得到意想不到的结果。

相关问题