SparkStearming+Hbase 新遇到的坑

本人使用的spark版本为2.2.1在现在(2018年01月03日18:29:48)是最新的了,HBASE用的1.4的

在开发的时候遇到了一个错

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.SparkContext.<init>(SparkContext.scala:76)
org.apache.spark.streaming.StreamingContext$.createNewSparkContext(StreamingContext.scala:839)
org.apache.spark.streaming.StreamingContext.<init>(StreamingContext.scala:85)
CreateStreaming$.createStreamingContext(CreateStreaming.scala:73)
CreateStreaming$.main(CreateStreaming.scala:28)
CreateStreaming.main(CreateStreaming.scala)
	at org.apache.spark.SparkContext$$anonfun$assertNoOtherContextIsRunning$2.apply(SparkContext.scala:2479)
	at org.apache.spark.SparkContext$$anonfun$assertNoOtherContextIsRunning$2.apply(SparkContext.scala:2475)
	at scala.Option.foreach(Option.scala:257)
	at org.apache.spark.SparkContext$.assertNoOtherContextIsRunning(SparkContext.scala:2475)
	at org.apache.spark.SparkContext$.setActiveContext(SparkContext.scala:2577)
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:2431)
	at CreateStreaming$.createStreamingContext(CreateStreaming.scala:74)
	at CreateStreaming$.main(CreateStreaming.scala:28)
	at CreateStreaming.main(CreateStreaming.scala)

意思很简单是说你的Java虚拟机中已经有一个sparkContext了

为了解决这个问题我Google了一下 发现有人是这样解决的

在创建sparkContext的时候添加了

    sparkConf.set("spark.driver.allowMultipleContexts", "true")

允许出现两个就可以忽略这个错

如果你这样做 ,恭喜你和我一样开始入坑了

在后边使用splContext 进行从sparkStearming中获取的数据时 你会死活都获取不到数据的

我的代码 一开始是这样的 

val sparkConf=new SparkConf().setAppName(" Wirect Kafka Offset to Zookeeper")
 val ssc=new StreamingContext(sparkConf,Seconds(10))//创建StreamingContext,每隔多少秒一个批次
    val sc = new SparkContext(sparkConf)
    val sqlcontext = new SQLContext(sc)

这样做很明显是用的sparkContext上下文不一致

解决了好几天 终于从坑里爬出来了

将代码改成了这样

    val sparkConf=new SparkConf().setAppName(" Wirect Kafka Offset to Zookeeper")
 val ssc=new StreamingContext(sparkConf,Seconds(10))//创建StreamingContext,每隔多少秒一个批次
    val sc = ssc.sparkContext
    val sqlcontext = new SQLContext(sc)
问题解决了 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值