spark streaming把spark.streaming.concurrentJobs设置大于2后报错

使用spark streaming时,发现处理耗时大于数据采集间隔(譬如10秒采集一次),于是把spark.streaming.concurrentJobs调大,使用并发处理。

使用并发处理后,会报下面错误:

org.apache.spark.SparkException: Job aborted due to stage failure: Task creation failed: org.apache.spark.SparkException: Attempted to use BlockRDD[237] at createStream at CLS_MainApp.java:106 after its blocks have been removed!

 

发现是过期的RDD被清理掉了,通过把存储级别设置为内存+硬盘后,依然会出现错误。

解决办法:

ssc = StreamingContext(sc, process_interval)
ssc.remember(remember_time)
通过remember函数,把RDD的存活耗时增大即可,譬如ssc.remember(600),使RDD存活10分钟。

发表评论

电子邮件地址不会被公开。 必填项已用*标注